區(qū)塊鏈去中心化的共識(shí)機(jī)制PoB解析
每一個(gè)區(qū)塊鏈產(chǎn)品,本身就是一個(gè)微型社會(huì),一個(gè)由網(wǎng)絡(luò)節(jié)點(diǎn)組成的自適應(yīng)組織,這個(gè)組織的運(yùn)行由共識(shí)機(jī)制來規(guī)范。共識(shí)機(jī)制是可編程的利益轉(zhuǎn)移規(guī)則,吸引人們參與其中,組成安全網(wǎng)絡(luò),并有序運(yùn)行。
在IOST目前版本的PoB機(jī)制中,區(qū)塊生產(chǎn)委員會(huì)擁有17個(gè)席位,每10分鐘換屆一次。每次換屆時(shí)Servi值最高的17個(gè)節(jié)點(diǎn)入選委員會(huì),輪流打包區(qū)塊并獲得獎(jiǎng)勵(lì)。節(jié)點(diǎn)每次入選委員會(huì)都會(huì)消耗Servi,未入選的節(jié)點(diǎn)就相對(duì)有更多Servi,在下次換屆時(shí)有更大的機(jī)會(huì)入選委員會(huì)。在此機(jī)制下,一天內(nèi)就可能有上百個(gè)節(jié)點(diǎn)入選過委員會(huì)。
在PoB機(jī)制中,成為備選節(jié)點(diǎn)的準(zhǔn)入門檻更低,更多社區(qū)成員可以參與競(jìng)選。同時(shí),通過高頻率的換屆,大部分備選節(jié)點(diǎn)都有資格入選,委員會(huì)的流動(dòng)性非常高,去中心化程度遠(yuǎn)高于EOS采用的基于少量超級(jí)節(jié)點(diǎn)和備選節(jié)點(diǎn)的DPoS機(jī)制,實(shí)現(xiàn)了更好的社區(qū)自治,同時(shí)也保障了更高的安全性。
概述
IOST設(shè)計(jì)的PoB是一個(gè)比DPoS更去中心化的選舉方案,并且具有相同的擴(kuò)展性。在本文中,我們希望用最簡(jiǎn)單清晰的文字描述PoB如何運(yùn)行。
我們希望設(shè)計(jì)一個(gè)選舉方案,使得大部分節(jié)點(diǎn)都有資格參與到區(qū)塊生產(chǎn)中,而不是只有頭部的少數(shù)節(jié)點(diǎn)進(jìn)行區(qū)塊生產(chǎn)。但是,被投Token*越多的節(jié)點(diǎn)仍然擁有更大的機(jī)會(huì)生產(chǎn)區(qū)塊。
*被投Token:在IOST網(wǎng)絡(luò)中,社區(qū)成員通過抵押Token獲得投票權(quán)。目前版本中,1Token=1票。
為了達(dá)到這個(gè)目的,我們并不直接采用投票結(jié)果作為選舉結(jié)果,而是引入了一個(gè)積分體系——Servi來決定委員會(huì)成員。
成為備選節(jié)點(diǎn)
出于對(duì)網(wǎng)絡(luò)安全的基本保證,PoB中對(duì)于區(qū)塊生產(chǎn)者依然設(shè)有一個(gè)基本門檻。在目前版本中,只要獲得超過全網(wǎng)0.1%的Token投票,就可以向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送一筆特定交易并成為備選節(jié)點(diǎn),參與區(qū)塊生產(chǎn)委員會(huì)的競(jìng)選。
Servi獲取與選舉
雖然投票結(jié)果并不直接決定委員會(huì)成員,但是備選節(jié)點(diǎn)的Servi獲取速率與投票結(jié)果是成正比的。
在目前版本中,每屆委員會(huì)我們將選出17名委員會(huì)成員,每輪選舉分為三步:
1. 社區(qū)成員抵押Token并投票,備選節(jié)點(diǎn)會(huì)得到與被投Token等量的Servi。
2. Servi值前17名的備選節(jié)點(diǎn)被選為這輪的委員會(huì)成員,負(fù)責(zé)下一個(gè)時(shí)間周期的區(qū)塊生產(chǎn)。
3. 所有入選委員會(huì)的17個(gè)節(jié)點(diǎn),最后一名的Servi值清零,其他節(jié)點(diǎn)扣除等量的Servi值。
在目前版本中,選舉的時(shí)間周期為10分鐘,也就是說在IOST網(wǎng)絡(luò)中,每10分鐘委員會(huì)就會(huì)進(jìn)行一次換屆。
樣例
假設(shè)現(xiàn)在我們的規(guī)則是從5個(gè)備選節(jié)點(diǎn)選出3個(gè)進(jìn)入委員會(huì),5個(gè)備選節(jié)點(diǎn)A、B、C、D、E當(dāng)前獲得的票數(shù)從高到低分別為10、8、5、4、1,假設(shè)他們的票數(shù)在這段時(shí)間內(nèi)保持不變。
在第一輪選舉中,5個(gè)備選節(jié)點(diǎn)的Servi值分別為A(10)、B(8)、C(5)、D(4)、E(1)(接下來用[10, 8, 5, 4, 1]表示)。這時(shí)A、B、C的Servi值最高,成為委員會(huì)成員,同時(shí)他們都被扣除排名末位的C的Servi值,即本屆委員會(huì)的最低Servi值——5。D、E的Servi值保持不變,Servi值情況變?yōu)椋?, 3, 0, 4, 1]。
在第二輪選舉中,Servi值在第一輪結(jié)束([5, 3, 0, 4, 1])的基礎(chǔ)上再次加上這些節(jié)點(diǎn)當(dāng)前的獲投票數(shù)([10, 8, 5, 4, 1]),變?yōu)椋?5, 11, 5, 8, 2]。這時(shí)A、B、D成為Servi值最高的備選節(jié)點(diǎn),所以這屆委員會(huì)成員為A、B、D,同時(shí)A、B、D都被扣除D的Servi值——8,Servi值情況變?yōu)椋?, 3, 5, 0, 2]。
在第三輪選舉中,Servi值情況變?yōu)椋?7, 11, 10, 4, 3],這時(shí)又是A、B、C組成委員會(huì)。
在第九輪選舉中,Servi值情況分別為[26, 8, 5, 12, 9],只獲得1票的備選節(jié)點(diǎn)E會(huì)第一次入選委員會(huì),委員會(huì)成員為A、D、E。
其他細(xì)節(jié)
1. 如果有多個(gè)備選節(jié)點(diǎn)的Servi值并列第17名,會(huì)優(yōu)先選擇更早成為備選節(jié)點(diǎn)的節(jié)點(diǎn),實(shí)際運(yùn)行中這種情況會(huì)很少見。
2. 在完成選舉之后,我們選用委員會(huì)成員輪流生產(chǎn)區(qū)塊的方案,也就是在一個(gè)時(shí)間周期內(nèi)無論委員會(huì)成員的Servi值多少,生產(chǎn)區(qū)塊的權(quán)利相等,對(duì)所有入選成員都是公平的。
3. 顯然,在大部分情況下,獲投票數(shù)排名第一位的節(jié)點(diǎn)總是會(huì)被選入委員會(huì)。為此我們?cè)O(shè)置了一個(gè)Servi值上限,Servi值不能超過被投Token數(shù)的10倍。
4. 備選節(jié)點(diǎn)需要在每6個(gè)選舉周期(也就是1小時(shí))內(nèi)發(fā)送一筆特定的驗(yàn)證交易證明節(jié)點(diǎn)在線,如果沒有,那么他將失去所有獲投票數(shù)并失去備選節(jié)點(diǎn)資格。
5. 如果委員會(huì)成員在一個(gè)時(shí)間周期內(nèi)沒有生產(chǎn)區(qū)塊,那么同樣,他將失去所有獲投票數(shù)并失去備選節(jié)點(diǎn)資格。
6. 投票所用的Token需要7天才能贖回,一個(gè)備選節(jié)點(diǎn)失去資格時(shí)也一樣,也就意味著發(fā)生以上兩種情況的節(jié)點(diǎn)無法很容易地馬上再次參選。
結(jié)論
我們通過引入一個(gè)積分體系——Servi來完成更去中心化的選舉,并且最終節(jié)點(diǎn)生產(chǎn)區(qū)塊數(shù)量的比例會(huì)接近于獲投票數(shù)的比例。同時(shí)由于它還是一個(gè)選舉方案,因此擁有較高的可擴(kuò)展性。