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