時(shí)間:2023-08-19|瀏覽:229
確定性 = 敲定 = 不可逆:不會(huì)出現(xiàn)“沖突”的情況
活性:有效交易最終必定會(huì)上鏈
沖突 = 分叉:非預(yù)期的分叉會(huì)導(dǎo)致雙重支付等各種問(wèn)題,是不安全的
GRANDPA要解決的問(wèn)題:保證區(qū)塊鏈的確定性。波卡將GRANDPA與BABE分成兩個(gè)模塊,BABE提供活性和概率的確定性,GRANDPA提供確定性。GRANDPA共識(shí)與BABE或者比特幣的POW不同,BABE和比特幣的POW是概率確定性,而GRANDPA共識(shí)要做到100%不可逆。之所以需要做到不可逆,因?yàn)椴ǖ目珂溙匦?,需要保證跨鏈的交易一旦執(zhí)行,絕不可能在原鏈上被撤銷。
要解決這個(gè)問(wèn)題還需要分別解決下面三個(gè)問(wèn)題:
問(wèn)題1:不要全部節(jié)點(diǎn)確認(rèn)才成為不可逆的問(wèn)題
因?yàn)槲覀儧](méi)辦法保證所有節(jié)點(diǎn)都會(huì)對(duì)某個(gè)塊進(jìn)行確認(rèn),畢竟網(wǎng)絡(luò)波動(dòng)的原因會(huì)一直存在,否則會(huì)極大影響效率。因此我們提出了各種BFT算法,在部分節(jié)點(diǎn)確認(rèn)的情況下,保證網(wǎng)絡(luò)的安全性。
這里會(huì)用到BFT 2次共識(shí),之所以需要2次是因?yàn)椋喝缟蠄D,如果只有1次確認(rèn)節(jié)點(diǎn),會(huì)有2個(gè)塊高度為101的區(qū)塊成為了不可逆,造成“沖突”。不會(huì)立馬成為commit,會(huì)先成為pre-commit,然后pre-commit經(jīng)過(guò)2/3共識(shí)后才會(huì)成為commit,就根本沒(méi)有任何情況能讓2個(gè)N同時(shí)成為commit。
問(wèn)題2:敲定過(guò)程中的大量網(wǎng)絡(luò)傳輸?shù)南膯?wèn)題
因?yàn)樾枰?次共識(shí)廣播,所以GRANDPA的復(fù)雜度是O(n^2),隨著節(jié)點(diǎn)數(shù)量的增加,效率也會(huì)大幅下降,比如EOS雖然只有21個(gè)出塊節(jié)點(diǎn),但它敲定的時(shí)間大概需要3分鐘左右,而波卡的目標(biāo)是全網(wǎng)1000個(gè)節(jié)點(diǎn)。
因此GRANDPA不是對(duì)每個(gè)pre-commit塊進(jìn)行逐個(gè)投票,而是將過(guò)程分為預(yù)投票和預(yù)執(zhí)行,對(duì)當(dāng)前最高塊進(jìn)行投票,通過(guò)拆解區(qū)塊結(jié)構(gòu),可以一次確認(rèn)若干個(gè)塊,極大提高敲定效率。
如下圖,每個(gè)節(jié)點(diǎn)選出自己認(rèn)為最高塊,從而確定本輪新敲定的塊。
問(wèn)題3:出現(xiàn)意外或者惡意節(jié)點(diǎn)的問(wèn)題
問(wèn)題1和2中都只考慮理想的誠(chéng)實(shí)節(jié)點(diǎn)的情況,但實(shí)際運(yùn)行時(shí)可能會(huì)出現(xiàn)其他情況導(dǎo)致“沖突”,比如下圖,當(dāng)網(wǎng)絡(luò)情況不好,導(dǎo)致兩邊的藍(lán)色誠(chéng)實(shí)節(jié)點(diǎn)無(wú)法同步,他們各自提交自己收到的區(qū)塊,而當(dāng)中的惡意節(jié)點(diǎn)對(duì)兩邊的提交都進(jìn)行簽名(雙簽),從而導(dǎo)致網(wǎng)絡(luò)“沖突”。除此之外,大量節(jié)點(diǎn)離線也導(dǎo)致問(wèn)題。
針對(duì)這類問(wèn)題,GRANDPA具有一項(xiàng)稱為“安全責(zé)任”的功能,即通過(guò)扣除節(jié)點(diǎn)抵押并將其從節(jié)點(diǎn)集中剔除,使驗(yàn)證者對(duì)違反安全性的行為負(fù)責(zé)。如果你想要重寫一個(gè)之前的區(qū)塊,除了需要能夠控制超過(guò)2/3的節(jié)點(diǎn)外,你還需要承受這2/3節(jié)點(diǎn)的抵押被系統(tǒng)扣除的成本。
GRANDPA的缺點(diǎn):GRANDPA最大的缺點(diǎn)是敲定時(shí)間的不確定性,Edgeware上線初期就出現(xiàn)過(guò)幾個(gè)小時(shí)無(wú)法敲定區(qū)塊的現(xiàn)象。不過(guò)任何設(shè)計(jì)都有代價(jià),只能說(shuō)這是GRANDPA追求節(jié)點(diǎn)數(shù)量(去中心化),必須付出的代價(jià)。
參考文獻(xiàn):
- Polkadot Consensus Part 2: GRANDPA - Polkadot共識(shí)第2部分: GRANDPA - GRANDPA Block Finality in Polkadot: An Introduction - Polkadot的區(qū)塊最終確定性祖父協(xié)議GRANDPA:簡(jiǎn)介 - DPOS3.0+BFT為什么需要2次2/3共識(shí)
熱點(diǎn):公平虛擬幣 dpos 比特共識(shí)幣 nft共識(shí) 幣圈共識(shí)