共识协议(6)PBFT详细步骤
step1. request階段
client發(fā)送消息給主導(dǎo)者:sign(REQUEST, o, t, c)
REQUEST= 消息內(nèi)容m+ 消息摘要d(m)
o: 請求的具體操作
t: 請求時客戶端追加的時間戳
c:客戶端標(biāo)識。
step2. pre-prepare階段
主導(dǎo)者發(fā)送消息給其他副本節(jié)點(diǎn): sign(<PRE-PREPARE, v, n, d>, m)
v:視圖編號
n:預(yù)準(zhǔn)備消息序號(要在某一個范圍區(qū)間內(nèi)的[h, H])
step3.
其他節(jié)點(diǎn)收到消息后,若同意,則發(fā)送prepared消息: sign(<PRE-PREPARE, v, n, d>, m),記錄PRE-PREPARE和PREPARE消息到log,用于View Change恢復(fù)請求。
副本節(jié)點(diǎn)i收到主導(dǎo)者節(jié)點(diǎn)的PRE-PREPARE消息,需要進(jìn)行校驗(yàn):
- 消息簽名。
- 是否已經(jīng)收到一條在同一v下并且編號也是n,但是簽名不同的PRE-PREPARE信息。
- d與m的摘要是否一致。
- n是否在區(qū)間[h, H]內(nèi)。
step4.
進(jìn)入prepared狀態(tài)的節(jié)點(diǎn),如果收到了2f+1個驗(yàn)證通過的PREPARE消息,則向其他節(jié)點(diǎn)發(fā)送commit消息:sign(COMMIT, v, n, d, i)消息。(記錄COMMIT消息到日志,用于View Change恢復(fù)請求。記錄PREPARE消息到log)
step5. REPLY
副本節(jié)點(diǎn)i收到了2f+1個驗(yàn)證通過的COMMIT消息,運(yùn)行客戶端的請求操作o,并返回<REPLY, v, t, c, i, r>
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的共识协议(6)PBFT详细步骤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 共识协议(3)比特币之POW
- 下一篇: 共识协议(8)NPOS提名权益证明