From rusty at rustcorp.com.au Fri Aug 21 01:33:52 2015 From: rusty at rustcorp.com.au (Rusty Russell) Date: Fri, 21 Aug 2015 11:03:52 +0930 Subject: [Lightning-dev] A state machine. In-Reply-To: References: <87si7eiehg.fsf@rustcorp.com.au> Message-ID: <87h9ntifwf.fsf@rustcorp.com.au> Pierre 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.