區(qū)塊鏈SPoS共識(shí)機(jī)制簡(jiǎn)介
第0章 引言
Vsystems的白皮書有兩份,一份是vsystems的系統(tǒng)白皮,另一份是SPoS共識(shí)機(jī)制白皮書,可見在SunnyKing的團(tuán)隊(duì)里,SPoS共識(shí)機(jī)制的定位是相當(dāng)重的。
第1章 什么是共識(shí)機(jī)制
區(qū)塊鏈系統(tǒng)是一個(gè)分布式計(jì)算系統(tǒng),即由許多節(jié)點(diǎn)(電腦)共同維護(hù)一個(gè)賬本。區(qū)塊鏈維護(hù)賬本包括誰(shuí)來(lái)更新新賬本頁(yè),和在所有節(jié)點(diǎn)中同步賬本。
共識(shí)機(jī)制就是在區(qū)塊鏈系統(tǒng)內(nèi),讓所有節(jié)點(diǎn)達(dá)到一個(gè)——由哪個(gè)節(jié)點(diǎn)來(lái)更新新賬本頁(yè),并且其他節(jié)點(diǎn)會(huì)將自己的賬本同步到該最新的賬本頁(yè)——的共同的決策方法論。
更專業(yè)的術(shù)語(yǔ)是,共識(shí)機(jī)制是決定哪個(gè)節(jié)點(diǎn)能出塊的算法。
第2章 去中心化共識(shí)機(jī)制
比特幣的共識(shí)機(jī)制是工作量證明PoW,點(diǎn)點(diǎn)幣的共識(shí)機(jī)制是權(quán)益證明PoS。PoW和PoS都是去中心化的共識(shí)機(jī)制。
PoW和PoS都沒有規(guī)定一共有多少節(jié)點(diǎn)可以出塊,理論上出塊節(jié)點(diǎn)可以是無(wú)限個(gè)。
PoW機(jī)制是系統(tǒng)發(fā)一個(gè)“目標(biāo)值”,這是一個(gè)數(shù)字,比如前面19個(gè)零的數(shù)字,只要你的節(jié)點(diǎn)能夠提供一個(gè)通過特定算法計(jì)算出來(lái)的前面有20個(gè)零的數(shù)字,你就可以獲得出塊的權(quán)力。
PoW機(jī)制下是要消耗能源來(lái)完成計(jì)算,我認(rèn)為這是合理的。不過整個(gè)加密數(shù)字貨幣社區(qū)有很大的聲音認(rèn)為PoW不對(duì),浪費(fèi)能源。PoS的誕生就是基于反對(duì)PoW消耗能源。
PoS是所有節(jié)點(diǎn)出一個(gè)叫“幣齡”的值,“幣齡=幣數(shù)x持幣不動(dòng)的時(shí)間”,比大小,誰(shuí)的幣齡大,誰(shuí)就獲得出塊的權(quán)力。
PoW和PoS這種模式是可以實(shí)現(xiàn)去中心化,任何人,都可以買礦機(jī)或買幣,加入出塊的博弈。
PoW的出塊原理決定了競(jìng)爭(zhēng)出塊是需要消耗真實(shí)的能源的,在同一高度上,哪怕你是沒有競(jìng)爭(zhēng)到出塊權(quán),你也是真實(shí)消耗了計(jì)算能力。在每一個(gè)高度上誕生出新塊后,之前所有的計(jì)算全都報(bào)廢,大家又同時(shí)站在同一起跑線重新計(jì)算。
PoS出塊是要真實(shí)消耗幣齡的,一個(gè)PoS節(jié)點(diǎn)一旦獲得了出塊權(quán),那它的幣齡就歸零了,要重新積累參與博弈。但只要你不出塊,你的幣齡就不會(huì)因?yàn)閯e人出塊了而消耗。這和PoW是不一樣的,PoW是別人出塊了,你的計(jì)算就得清零。
目前純PoS共識(shí)機(jī)制好像流行,點(diǎn)點(diǎn)幣已經(jīng)被邊緣化了。ADA幣看起來(lái)是最成熟的PoS。ADA幣的PoS模塊被Fork的最多。
PoW和PoS的出塊還有一個(gè)大特點(diǎn),就是出塊在時(shí)間分布上是隨機(jī)的,只能在統(tǒng)計(jì)意義上獲得一個(gè)平均的出塊時(shí)間。比如比特幣的出塊時(shí)間平均是10分鐘,但具體的兩個(gè)塊時(shí)間間隔可能是幾秒鐘,也可能是1個(gè)小時(shí)以上。
第3章 多中心共識(shí)機(jī)制——SPoS
中本聰通過比特幣發(fā)明了PoW機(jī)制。SunnyKing通過發(fā)明點(diǎn)點(diǎn)幣發(fā)明了PoS機(jī)制。PoW工作的非常好,但PoS并沒有大量流行。SunnyKing曾經(jīng)發(fā)表過一篇文章描述他的認(rèn)知升級(jí),他認(rèn)為真實(shí)的世界是多中心的。整個(gè)人類就是一個(gè)多中心的世界,一個(gè)國(guó)家就是一個(gè)中心。多中心形成龐大的系統(tǒng)。
SunnyKing思考去中心化在性能上遇到了瓶頸,大量的真實(shí)世界并不是去中心化的,自然的演化形成多中心的系統(tǒng)。而比特幣挖礦礦池的誕生,大礦場(chǎng)的誕生,也證明了多中心是一個(gè)復(fù)雜系統(tǒng)演化的方向。
所以,SunnyKing在他的新區(qū)塊鏈系統(tǒng)中采用了多中心的架構(gòu)——SPoS。
在SPoS機(jī)制下,出塊節(jié)點(diǎn)的數(shù)量是有限的,目前vsys一共15個(gè)出塊節(jié)點(diǎn),叫超級(jí)節(jié)點(diǎn)。超級(jí)節(jié)點(diǎn)分成兩類,一類是“候任節(jié)點(diǎn)”,一類是“在任節(jié)點(diǎn)”。在任節(jié)點(diǎn)是可以出塊的節(jié)點(diǎn)。要成為出塊節(jié)點(diǎn),需要先完成“挑戰(zhàn)”。
“挑戰(zhàn)”的過程就是將“在任節(jié)點(diǎn)”選下去,自己成為“在任節(jié)點(diǎn)”?!疤魬?zhàn)”是使用“加權(quán)平均幣齡”這個(gè)參數(shù)來(lái)完成。
vsys幣同樣是有幣齡的屬性,這和比特幣、點(diǎn)點(diǎn)幣是完全一樣的?!皫琵g=余額x持幣天數(shù)”,以“幣天”為單位。只要持幣不動(dòng)就可以累計(jì)幣齡,幣只要轉(zhuǎn)移其幣齡就會(huì)被銷毀。
但是幣齡在比特幣這種UTXO模型下是非常方便計(jì)算的,因?yàn)閁TXO和錢包里的余額是不同的概念,錢包余額是UTXO的總和。幣齡只需要計(jì)算UTXO剩余持幣天數(shù),錢包里的余額的總幣齡就是所有UTXO幣齡的累加。但在賬戶制下,比如以太坊,計(jì)算幣齡就非常復(fù)雜了,因?yàn)橐粋€(gè)賬戶有多筆金額轉(zhuǎn)入時(shí),余額會(huì)變成一個(gè)數(shù)值,無(wú)法像UTXO那樣非常方便地區(qū)分輸入。
在vsys幣里,為了實(shí)現(xiàn)幣齡更方便地計(jì)算,使用了“已確認(rèn)余額”的屬性來(lái)計(jì)算幣齡,具體的計(jì)算公式很復(fù)雜,我們不用管,你可以簡(jiǎn)化成是將區(qū)塊確認(rèn)數(shù)和賬戶余額相乘。在SPoS的白皮書里,還描述了更多的計(jì)算細(xì)節(jié),以在工程上實(shí)現(xiàn)“節(jié)點(diǎn)”的“挑戰(zhàn)”與“被挑戰(zhàn)”。包括一些攻擊解決辦法。數(shù)學(xué)上的證明,我們就不用管了,我們只需要理會(huì)里面的精神就好了。
用戶持有vsys幣,在錢包里可以有發(fā)送接收操作,這就和我們發(fā)送接收比特幣一樣。vsys幣還有一個(gè)“租賃”操作。允許用戶將自己的vsys幣的“已確認(rèn)余額(即幣齡)”的屬性“租借”給超級(jí)節(jié)點(diǎn)。超級(jí)節(jié)點(diǎn)累加借來(lái)的所有幣的“幣齡”,一旦超級(jí)節(jié)點(diǎn)的“幣齡”擠進(jìn)了全網(wǎng)所有節(jié)點(diǎn)“幣齡”排行前15名,就可以通過“挑戰(zhàn)”操作將“在任節(jié)點(diǎn)”幣齡最后一名挑下馬,自己成為“在任節(jié)點(diǎn)”。
“挑戰(zhàn)”操作需要消耗超級(jí)節(jié)點(diǎn)5萬(wàn)個(gè)vsys。
用戶發(fā)起“租賃”操作,只是將“幣齡”租借給超級(jí)節(jié)點(diǎn)使用,而私鑰依然是用戶控制,用戶依然是可以隨時(shí)發(fā)起“發(fā)送”和“接收”操作的。
“在任節(jié)點(diǎn)”需要時(shí)刻關(guān)注全網(wǎng)其他“候任節(jié)點(diǎn)”的“幣齡”,一旦“幣齡”被比下去了,那“在任節(jié)點(diǎn)”就可能會(huì)被挑戰(zhàn),從而被擠出去。
在超級(jí)節(jié)點(diǎn)挑戰(zhàn)成功后,就獲得了出塊權(quán)。系統(tǒng)有一個(gè)叫“槽位”的概念,每一個(gè)超級(jí)節(jié)點(diǎn)占據(jù)一個(gè)槽位,共同構(gòu)成一個(gè)有順序的環(huán),輪流有序出塊。
目前vsys系統(tǒng)設(shè)置15個(gè)可出塊的超級(jí)節(jié)點(diǎn),將1分鐘切割成15份,4秒一份,全網(wǎng)4秒出一個(gè)塊,15個(gè)節(jié)點(diǎn)輪流有序出塊。SPoS機(jī)制還可以升級(jí)成更多的超級(jí)節(jié)點(diǎn)數(shù),vsys在將來(lái)會(huì)在需要提升性能時(shí)將節(jié)點(diǎn)數(shù)提升到30個(gè),2秒出一個(gè)塊,在更遠(yuǎn)的未來(lái)會(huì)提升至60個(gè)超級(jí)節(jié)點(diǎn),1秒出一個(gè)塊。
SPoS機(jī)制下,出塊節(jié)點(diǎn)成為一個(gè)中心節(jié)點(diǎn),它們共同組成多中心的系統(tǒng)。SPoS機(jī)制的特點(diǎn)是系統(tǒng)設(shè)置固定數(shù)量的出塊節(jié)點(diǎn),和節(jié)點(diǎn)按順序出塊,出塊時(shí)間是固定的。采用SPoS,可以獲得相對(duì)去中心化共識(shí)機(jī)制更高的出塊速度,更高的tps。
在網(wǎng)絡(luò)結(jié)構(gòu)上多中心機(jī)制和去中心化機(jī)制是有質(zhì)區(qū)別的。去中心化共識(shí)機(jī)制的節(jié)點(diǎn)是一個(gè)P2P網(wǎng)絡(luò),各個(gè)節(jié)點(diǎn)之間需要網(wǎng)絡(luò)發(fā)現(xiàn)探測(cè)各自在哪里。但多中心節(jié)點(diǎn)的系統(tǒng),節(jié)點(diǎn)之間共同組成一個(gè)有序網(wǎng)絡(luò),相互之間是知道各自存在的。
第4章 多中心共識(shí)機(jī)制——DPoS
現(xiàn)在更流行的多中心共識(shí)機(jī)制是DPoS,這是BM發(fā)明了比特股和EOS帶來(lái)的,其內(nèi)置的共識(shí)機(jī)制是委托權(quán)益證明DPoS。
DPoS是一個(gè)多中心共識(shí)機(jī)制,其特點(diǎn)是系統(tǒng)設(shè)置固定數(shù)量的出塊節(jié)點(diǎn),和節(jié)點(diǎn)按順序出塊,出塊時(shí)間是固定的。
在DPoS機(jī)制下,同樣的,節(jié)點(diǎn)有兩類,一類是“候任節(jié)點(diǎn)”,一類是“在任節(jié)點(diǎn)”。在任節(jié)點(diǎn)是可以出塊的節(jié)點(diǎn)。要成為出塊節(jié)點(diǎn),需要先完成“競(jìng)選”。
DPoS機(jī)制下的“競(jìng)選”選票是幣的“投票權(quán)”。在DPoS機(jī)制下,幣有一個(gè)屬性,叫“投票權(quán)”,用戶可以通過鎖定幣來(lái)獲得“投票權(quán)”,即用戶要放棄幣的“流動(dòng)屬”性才能獲得“投票權(quán)”。
在EOS系統(tǒng)里,任何用戶的EOS幣都可以通過鎖定來(lái)獲得一些特性,包括“內(nèi)存資源”“CPU資源”和“Net資源”,還有就是一個(gè)幣獲得“30張投票權(quán)”。這“30張投票權(quán)”對(duì)一個(gè)節(jié)點(diǎn)來(lái)說(shuō),只能投一次,你不能說(shuō)我給一個(gè)節(jié)點(diǎn)投30張票,但你可以投給30個(gè)不同的節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)一張票。用戶鎖倉(cāng)幣的行為會(huì)讓幣喪失流動(dòng)性,贖回需要3天。
DPoS機(jī)制下“候任節(jié)點(diǎn)”向全網(wǎng)公布自己的被“投票賬號(hào)”,你要吸引足夠多的票數(shù)。EOS系統(tǒng)設(shè)定21個(gè)可以出塊的“在任節(jié)點(diǎn)”,節(jié)點(diǎn)之間通過比“票數(shù)”多少來(lái)競(jìng)爭(zhēng),票數(shù)前21名競(jìng)選成功。
BTS也是類似的。
在節(jié)點(diǎn)競(jìng)選成功后,就獲得了出塊權(quán)。系統(tǒng)有一個(gè)叫“槽位”的概念,每一個(gè)節(jié)點(diǎn)占據(jù)一個(gè)槽位,共同構(gòu)成一個(gè)有順序的環(huán),輪流有序出塊。
“在任節(jié)點(diǎn)”需要時(shí)刻關(guān)注全網(wǎng)其他“候任節(jié)點(diǎn)”的“票數(shù)”,一旦“票數(shù)”被比下去了,那“在任節(jié)點(diǎn)”就會(huì)被擠出去。
采用DPoS,可以獲得更高的出塊速度,更高的tps。比如EOS就是現(xiàn)在所有鏈里出塊最快的,0.5秒,tps可以達(dá)到千,真實(shí)峰值達(dá)到過3000多。
第5章 多中心vs去中心化
SPoS和DPoS,vs, PoW和PoS。
顯然,在區(qū)域鏈的性能上,包括確認(rèn)時(shí)間和tps,這兩個(gè)指標(biāo)上多中心要明顯優(yōu)于去中心化機(jī)制。
多中心的缺點(diǎn)在于抗打擊性上。去中心化機(jī)制是的出塊節(jié)點(diǎn)可以是完全匿名的,出塊節(jié)點(diǎn)是無(wú)須許可加入網(wǎng)絡(luò)的,這樣的機(jī)制是很難被消滅的。你消滅了任何一個(gè)出塊節(jié)點(diǎn),對(duì)整個(gè)網(wǎng)絡(luò)的影響是非常小的。你又不可能同時(shí)消滅所有的出塊節(jié)點(diǎn)。
多中心機(jī)制則有可能被同時(shí)消滅,因?yàn)槎嘀行牡墓?jié)點(diǎn)想要匿名更難,整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)決定了,這是一個(gè)需要某種許可的機(jī)制。
當(dāng)然,兩類機(jī)制的差別還遠(yuǎn)不止這一些,但評(píng)估這兩類共識(shí)機(jī)制不是本文的重點(diǎn),以后有機(jī)會(huì)再講。
第6章 中心共識(shí)機(jī)制
哈哈,中心共識(shí)機(jī)制就是“服務(wù)器-客戶端”結(jié)構(gòu)啦,賬本由中心節(jié)點(diǎn)負(fù)責(zé)維護(hù),即“出塊權(quán)”全部歸中心節(jié)點(diǎn)。
銀行、支付寶、微信支付都是中心共識(shí)機(jī)制。
第7章 結(jié)束語(yǔ)
很多人講“多中心化”,我怎么都覺得這個(gè)“化”字多余。“去中心化”是一個(gè)動(dòng)詞“去”,“化”這個(gè)詞是一個(gè)描述這個(gè)動(dòng)作后的結(jié)果。但“多中心”,這里面沒有動(dòng)詞,就不需要“化”了。