[Lightning-dev] A state machine.

Rusty Russell rusty at rustcorp.com.au
Fri Aug 21 01:33:52 UTC 2015


Pierre <pm+lists at acinq.fr> writes:
> Sorry I messed things up, let me try again !
>
> 1) Bob is in NORMAL state
> - Bob receives update_add_htlc from Alice
> - Bob sends update_accept to Alice
>
> 2) Bob switches to WAIT_FOR_UPDATE_SIG state
> - Bob receives update_signature from Alice
> - Bob sends update_complete to Alice
>
> 3) Bob switches to NORMAL state

Yep, Bob goes NORMAL (send PKT_UPDATE_ACCEPT)
        -> WAIT_FOR_UPDATE_SIG
        -> NORMAL

When Carol completes htlc, Bob sees CMD_SEND_HTLC_COMPLETE,
and does:

        NORMAL (send PKT_UPDATE_COMPLETE_HTLC)
        -> STATE_WAIT_FOR_HTLC_ACCEPT (send PKT_UPDATE_SIGNATURE)
        -> STATE_WAIT_FOR_UPDATE_COMPLETE
        -> NORMAL

> - (Bob sends update_add_htlc to Carol on another channel)
> - (Bob receives update_complete_htlc from Carol on another channel)
> - Bob sends update_complete_htlc to Alice
>
> 4) Bob switches to WAIT_FOR_HTLC_ACCEPT state
> - Bob receives update_accept from Alice
> - Bob sends update_signature to Alice
>
> 5) Bob switches to WAIT_FOR_UPDATE_COMPLETE state
> - Bob receives update_complete from Alice
>
> 6) Bob switches to NORMAL state
>
> Phew, does that make sense ?

Yeah.  Let me generate a decent text flowchart for the normal cases...

Thanks!
Rusty.


More information about the Lightning-dev mailing list