Ripple共識(shí)算法的工作流程介紹
Ripple 是什么?
1.Ripple 的網(wǎng)絡(luò)結(jié)構(gòu)
Ripple(瑞波)是一種基于互聯(lián)網(wǎng)的開(kāi)源支付協(xié)議,可以實(shí)現(xiàn)去中心化的貨幣兌換、支付與清算功能。在 Ripple 的網(wǎng)絡(luò)中,交易由客戶端(應(yīng)用)發(fā)起,經(jīng)過(guò)追蹤節(jié)點(diǎn)(tracking node)或驗(yàn)證節(jié)點(diǎn)(validatingnode)把交易廣播到整個(gè)網(wǎng)絡(luò)中。追蹤節(jié)點(diǎn)的主要功能是分發(fā)交易信息以及響應(yīng)客戶端的賬本請(qǐng)求。驗(yàn)證節(jié)點(diǎn)除包含追蹤節(jié)點(diǎn)的所有功能外,還能夠通過(guò)共識(shí)協(xié)議,在賬本中增加新的賬本實(shí)例數(shù)據(jù)。
2.Ripple 共識(shí)算法
Ripple 的共識(shí)達(dá)成發(fā)生在驗(yàn)證節(jié)點(diǎn)之間,每個(gè)驗(yàn)證節(jié)點(diǎn)都預(yù)先配置了一份可信任節(jié)點(diǎn)名單,每個(gè)驗(yàn)證節(jié)點(diǎn)都預(yù)先配置了一份可信任節(jié)點(diǎn)名單,稱為 UNL(Unique Node List)。在名單上的節(jié)點(diǎn)可對(duì)交易達(dá)成進(jìn)行投票。每隔幾秒,Ripple 網(wǎng)絡(luò)將進(jìn)行如下共識(shí)過(guò)程:
1)每個(gè)驗(yàn)證節(jié)點(diǎn)會(huì)不斷收到從網(wǎng)絡(luò)發(fā)送過(guò)來(lái)的交易,通過(guò)與本地賬本數(shù)據(jù)驗(yàn)證后,不合法的交易直接丟棄,合法的交易將匯總成交易候選集(candidate set)。交易候選集里面還包括之前共識(shí)過(guò)程無(wú)法確認(rèn)而遺留下來(lái)的交易。
2)每個(gè)驗(yàn)證節(jié)點(diǎn)把自己的交易候選集作為提案發(fā)送給其他驗(yàn)證節(jié)點(diǎn)。
3)驗(yàn)證節(jié)點(diǎn)在收到其他節(jié)點(diǎn)發(fā)來(lái)的提案后,如果不是來(lái)自 UNL上的節(jié)點(diǎn),則忽略該提案;如果是來(lái)自 UNL 上的節(jié)點(diǎn),就會(huì)對(duì)比提案中的交易和本地的交易候選 候選集,如果有相同的交易,該交易就獲得一票。在一定時(shí)間內(nèi),當(dāng)交易獲得超過(guò) 50%的票數(shù)時(shí),則該交易進(jìn)入下一輪。沒(méi)有超過(guò) 50%的交易,將留待下一次共識(shí)過(guò)程去確認(rèn)。
4)驗(yàn)證節(jié)點(diǎn)把超過(guò) 50%票數(shù)的交易作為提案發(fā)給其他節(jié)點(diǎn),同時(shí)提高所需票數(shù)的閾值到 60%,重復(fù)步驟 3)步驟 4),直到閾值達(dá)到 80%。
5)驗(yàn)證節(jié)點(diǎn)把經(jīng)過(guò) 80%UNL 節(jié)點(diǎn)確認(rèn)的交易正式寫(xiě)入本地的賬本數(shù)據(jù)中,稱為最后關(guān)閉賬本(Last Closed Ledger),即賬本最后(最新)的狀態(tài)。
圖1
圖2
上圖是共識(shí)算法流程,我們 SCRY 的 Using AuthenTIcaTIon in CertificaTIon agreement Based Swarm Intelligence 集群智能認(rèn)證,群體認(rèn)證數(shù)據(jù)簽名也是基于 Ripple 變種。
在 Ripple 的共識(shí)算法中,參與投票節(jié)點(diǎn)的身份是事先知道的,因此,算法的效率比 PoW 等匿名共識(shí)算法要高效,交易的確認(rèn)時(shí)間只需幾秒鐘。當(dāng)然,這點(diǎn)也決定了該共識(shí)算法只適合于權(quán)限鏈(Permissioned chain)的場(chǎng)景。Ripple 共識(shí)算法的拜占庭容錯(cuò)(BFT)能力為(n-1)/5,即可以容忍整個(gè)網(wǎng)絡(luò)中 20%的節(jié)點(diǎn)出現(xiàn)拜占庭錯(cuò)誤而不影響正確的共識(shí)。