---
# System prepended metadata

title: V2 Channel Establishment and Splicing Diagram

---

# Preliminary V2 Channel Establishment and Splicing Diagrams

These are preliminary sketches for review.  Will make pretty and add to
https://gitlab.com/lightning-signer/docs/-/blob/master/seq-diagrams/README.md when they are mostly correct ...


## Refs
|  | PR | Fork |
| -------- | -------- | -------- |
| Dual Funding     | [BOLTS#851](https://github.com/lightning/bolts/pull/851)     | https://github.com/niftynei/lightning-rfc/tree/nifty/dual-fund     |
| Splicing | [BOLTS#863](https://github.com/lightning/bolts/pull/863) | https://github.com/rustyrussell/lightning-rfc/tree/guilt/splice |

## Sketches

```
                                           TX COLLABORATION
                             +-------+                         +-------+
                             |       |--(1)- tx_add_input ---->|       |
                             |       |<-(2)- tx_complete ------|       |
                             |       |--(3)- tx_add_output --->|       |
                             |       |<-(4)- tx_complete ------|       |
                             |       |--(5)- tx_add_input ---->|       |
                             |   A   |<-(6)- tx_add_input -----|   B   |
                             |       |--(7)- tx_remove_output >|       |
                             |       |<-(8)- tx_add_output ----|       |
                             |       |--(9)- tx_complete ----->|       |
                             |       |<-(10) tx_complete ------|       |
                             +-------+                         +-------+
```

```

                                        V2 CHANNEL ESTABLISH
                          +-------+                              +-------+
               NewChannel |       |--(1)--- open_channel2  ----->|       | NewChannel
                          |       |<-(2)--- accept_channel2 -----|       |
                          |       |                              |       |
                          |       |      <tx collaboration>      |       |
             SetupChannel |       |<--- <mutual tx_complete> --->|       | SetupChannel
                          |       |                              |       |
       SignCprtCommitment |       |--(3)--  commitment_signed -->|       | ValidateHldrCommit
       ValidateHldrCommit |       |<-(4)--  commitment_signed ---|       | SignCprtCommitment
                          |   A   |                              |   B   |
                          |       |<-(5)--  tx_signatures -------|       | SignOnchainTx
            SignOnchainTx |       |--(6)--  tx_signatures ------>|       |
                          |       |                              |       |
                                           FUNDING RBF'D
                          |       |                              |       |
                          |       |--(a)--- tx_init_rbf -------->|       |
                          |       |<-(b)--- tx_ack_rbf ----------|       |
                          |       |                              |       |
                          |       |    <tx rbf collaboration>    |       |
             SetupChannel |       |<--- <mutual tx_complete> --->|       | SetupChannel
                          |       |                              |       |
       SignCprtCommitment |       |--(c)--  commitment_signed -->|       | ValidateHldrCommit
       ValidateHldrCommit |       |<-(d)--  commitment_signed ---|       | SignCprtCommitment
                          |       |                              |       |
                          |       |<-(e)--  tx_signatures -------|       | SignOnchainTx
            SignOnchainTx |       |--(f)--  tx_signatures ------>|       |
                          |       |                              |       |
                                            CHANNEL READY
                          |       |                              |       |
            CheckOutpoint |       |--(7)--- channel_ready  ----->|       | CheckOutpoint
                          |       |                              |       | LockOutpoint
             LockOutpoint |       |<-(8)--- channel_ready  ------|       |

```

```

                                         SPLICE INITIATED
                          |       |                              |       |
                          |       |--(1)--- splice ------------->|       |
                          |       |<-(2)--- splice_ack ----------|       |
                          |       |                              |       |
                          |       |      <tx collaboration>      |       |
             SetupChannel |       |<--- <mutual tx_complete> --->|       | SetupChannel
                          |       |                              |       |
       SignCprtCommitment |       |--(3)--  commitment_signed -->|       | ValidateHldrCommit
       ValidateHldrCommit |       |<-(4)--  commitment_signed ---|       | SignCprtCommitment
                          |   A   |                              |   B   |
                          |       |<-(5)--  tx_signatures -------|       | SignOnchainTx*
           SignOnchainTx* |       |--(6)--  tx_signatures ------>|       |
                          |       |                              |       |
                                           SPLICE RBF'D
                          |       |                              |       |
                          |       |--(a)--- tx_init_rbf -------->|       |
                          |       |<-(b)--- tx_ack_rbf ----------|       |
                          |       |                              |       |
                          |       |    <tx rbf collaboration>    |       |
             SetupChannel |       |<--- <mutual tx_complete> --->|       | SetupChannel
                          |       |                              |       |
       SignCprtCommitment |       |--(c)--  commitment_signed -->|       | ValidateHldrCommit
       ValidateHldrCommit |       |<-(d)--  commitment_signed ---|       | SignCprtCommitment
                          |       |                              |       |
                          |       |<-(e)--  tx_signatures -------|       | SignOnchainTx*
           SignOnchainTx* |       |--(f)--  tx_signatures ------>|       |
                          |       |                              |       |
                                      OPERATION BEFORE LOCKED

                          |       |--(A)---- update_add_htlc --->|       |
                          |       |--(B)---- update_add_htlc --->|       |
                          |       |<-(C)---- update_add_htlc ----|       |
                          |       |                              |       |
   N+1 SignCprtCommitment |       |--(D)- commitment_signed(s) ->|       | N+1 ValidateHldrCommit
   ValidateCprtRevocation |   A   |<-(E)---- revoke_and_ack -----|   B   |
                          |       |                              |       |
   N+1 ValidateHldrCommit |       |<-(F)- commitment_signed(s) --|       | N+1 SignCprtCommitment
                          |       |--(G)---- revoke_and_ack ---->|       | ValidateCprtRevocation
                          |       |                              |       |
   N+1 SignCprtCommitment |       |--(H)- commitment_signed(s) ->|       | N+1 ValidateHldrCommit
   ValidateCprtRevocation |       |<-(I)---- revoke_and_ack -----|       |
                          |       |                              |       |
                                           SPLICE LOCKED
                          |       |                              |       |
            CheckOutpoint |       |--(7)--- splice_locked  ----->|       | CheckOutpoint
                          |       |                              |       | LockOutpoint
             LockOutpoint |       |<-(8)--- splice_locked  ------|       |
 ```
