Algorithm 3: Force-freeze chain replication (For brevity, we omit message encryption, authentication and freshness.) 1 on assign_comm_chain(pub): 2 assert(pred = ∅)/* no chain */ 3 attest_and_auth_DH(pub) 4 pred ← pub/* set chain pred */ 5 send(addTail) to (pub) 6 wait_for(update, s) from (pub) 7 return ⊤ 8 on receive(addTail) from (pub): 9 assert(succ = ∅)/* current tail */ 10 attest_and_auth_DH(pub) 11 succ ← pub 12 send(update, curr_state) to (pub) 13 on receive(update, s) from (pub): 14 assert(pred = pub) 15 if succ = ∅ then 16 update_state_to(s) 17 ack ← create_signed_ack() 18 else 19 ack ← send(update, s) to (succ) 20 if fail_or_invalid(ack) then 21 freeze() /* can’t update */ 22 else 23 update_state_to(s) 24 ack ← sign_ack(ack) 25 send(ack) to pub
我真的不明白了,这个算法到底过程是怎么样的?