Normal Operation

    BOLT #2 - Normal Operation


    State Notation Signer State
    H[] C[] no holder commitment, no counterparty commitment
    H[0] C[0] holder initial commitment, counterparty initial commitment
    H[n] C[m] holder commitment n, counterparty commitment m
    H[n,n+1] C[m] holder commitment n and n+1, counterparty commitment m
    H[n]* holder base commitment, splice, and RBF candidates for n
    H[n,n+1]* holder base commitment, splice, and RBF candidates for n and n+1

    sequenceDiagram
        autonumber
    
        participant Signer-A
        participant Node-A
        participant Node-B
        participant Signer-B
    
        par
            %% Node-A initiated, nantucket red
            rect rgb(254, 126, 136)
    
                activate Node-A
                Note over Node-A: Update Node B's Commitment
                Note over Signer-A: H[n] C[m]
                Node-A->>+Signer-A: SignCounterpartyCommitment(m+1)
                Signer-A-->>-Node-A: 
                Note over Signer-A: H[n] C[m,m+1]
    
                Node-A->>+Node-B: commitment_signed(m+1)
    
                Note over Signer-B: H[m] C[n]
                Node-B->>+Signer-B: ValidateHolderCommitment(m+1)
                Signer-B-->>-Node-B: 
                Note over Signer-B: H[m,m+1] C[n]
    
                Note over Node-B: persist H[m+1]
    
                Node-B->>+Signer-B: RevokeHolderCommitment(m)
                Signer-B-->>-Node-B: 
                Note over Signer-B: H[m+1] C[n]
    
                Node-B->>Node-A: revoke_and_ack(m)
    
                deactivate Node-B
                Node-A->>+Signer-A: ValidateCounterpartyRevocation(m)
                Signer-A-->>-Node-A: 
                Note over Signer-A: H[n] C[m+1]
                deactivate Node-A
    
            end
        and
            %% Node-B initiated, soft teal
            rect rgb(143, 188, 187)
    
                activate Node-B
                Note over Node-B: Update Node A's Commitment
                Note over Signer-B: H[m] C[n]
                Node-B->>+Signer-B: SignCounterpartyCommitment(n+1)
                Signer-B-->>-Node-B: 
                Note over Signer-B: H[m] C[n,n+1]
    
                Node-B->>+Node-A: commitment_signed(n+1)
    
                Note over Signer-A: H[n] C[m]
                Node-A->>+Signer-A: ValidateHolderCommitment(n+1)
                Signer-A-->>-Node-A: 
                Note over Signer-A: H[n,n+1] C[m]
    
                Note over Node-A: persist H[n+1]
    
                Node-A->>+Signer-A: RevokeHolderCommitment(n)
                Signer-A-->>-Node-A: 
                Note over Signer-A: H[n+1] C[m]
    
                Node-A->>Node-B: revoke_and_ack(n)
    
                deactivate Node-A
                Node-B->>+Signer-B: ValidateCounterpartyRevocation(n)
                Signer-B-->>-Node-B: 
                Note over Signer-B: H[m] C[n+1]
                deactivate Node-B
    
            end
        end