區(qū)塊鏈已正式從大區(qū)塊紛爭(zhēng)進(jìn)入到了新的共識(shí)時(shí)代
性能一直以來都是困擾區(qū)塊鏈項(xiàng)目的問題,從BTC到ETH,性能問題在2017年的牛市當(dāng)中暴露出來,并以極其悲觀的速度散播開來,什么一漲網(wǎng)絡(luò)就卡,什么一個(gè)游戲拖垮整個(gè)公鏈,幾乎瞬時(shí)間,面對(duì)BTC和ETH的擴(kuò)容方案如雨后春筍般不斷冒出,那些通過白皮書宣傳每秒可以處理百萬級(jí)交易的項(xiàng)目受到了熱捧。
大區(qū)塊,閃電網(wǎng)絡(luò),DPoS,側(cè)鏈,zk-SNARKs等方案開始走入人們的視野,其速度更迭之快,頗有科技大爆炸的感覺。這些方案大都帶著誠意而來,但面對(duì)這Vitalik曾提出來的區(qū)塊鏈鐵三角定律,多多少少有點(diǎn)缺胳膊短腿的感覺。性能,安全和去中心化,這3個(gè)指標(biāo)沒有項(xiàng)目能達(dá)到三全,兩全的項(xiàng)目大都突出自己的強(qiáng)勢(shì),而忽略了自己的劣勢(shì),市場(chǎng)上的投資者缺少對(duì)技術(shù)的認(rèn)知,大都被宣傳蒙蔽了雙眼,他們的追漲也助推了區(qū)塊鏈項(xiàng)目改變性能的浪潮。
1是BTC的大區(qū)塊擴(kuò)容,2是共識(shí)時(shí)代帶來的擴(kuò)容。在我們所接觸到,已經(jīng)實(shí)現(xiàn)的擴(kuò)容方案中,大區(qū)塊擴(kuò)容,共識(shí)升級(jí)和側(cè)鏈方案也是離我們最近的,也是最容易理解的。
大區(qū)塊的擴(kuò)容發(fā)生在BTC上,這個(gè)擴(kuò)容引發(fā)了,起碼是至今區(qū)塊鏈?zhǔn)飞献畲笄叶啻蔚纳鐓^(qū)分裂,BTC成功被同一個(gè)社區(qū)多個(gè)人分裂成了不同的項(xiàng)目,BCH,BSV,SBTC,LBTC.。..。.高達(dá)10多種的社區(qū)分裂幣,把整個(gè)加密貨幣圈子搞的“烏煙瘴氣”,削弱了很多人對(duì)BTC的共識(shí),也給其他Token帶去了希望。
共識(shí)的擴(kuò)容已經(jīng)脫離BTC的本質(zhì),從PoW的共識(shí)改變到了PoS的共識(shí),PoS共識(shí)帶來了合作社形式的共識(shí),讓PoW礦工的競(jìng)爭(zhēng)關(guān)系變成了合作,這讓整個(gè)共識(shí)效率得到了非常大的提高。而另外一方面,由于PoW礦機(jī)出現(xiàn)了長(zhǎng)時(shí)間的軍備競(jìng)賽,大量的算力被導(dǎo)向了單一礦池,去中心化程度堪憂,PoS共識(shí)的提出有助于解決中心化的問題,這個(gè)提出在2014年,Vitalik提出將以太坊的PoW共識(shí)改成PoS共識(shí)時(shí)達(dá)到高潮。
我們簡(jiǎn)單說,PoS改變性能是基于PoW了。PoW的礦工通過同時(shí)計(jì)算一個(gè)哈希值,誰先計(jì)算出來誰就勝利的方式,獲得共識(shí),但也使得礦工之間浪費(fèi)了不必要的能量,特別是時(shí)間。PoS的礦工通過選舉算法的方式,隨機(jī)輪流在指定時(shí)間確定出塊,并達(dá)成共識(shí),這種由系統(tǒng)決定的次序會(huì)比爭(zhēng)奪位置獲得機(jī)會(huì)的性能要優(yōu)化很多。
所以我們?cè)?014年后,看到越來越多基于PoS共識(shí)的公有鏈項(xiàng)目,提出了高于ETH的性能口號(hào),并且是高出指數(shù)級(jí)別以上的。當(dāng)然,共識(shí)上的優(yōu)勢(shì)并不能讓PoS項(xiàng)目滿足,況且PoS共識(shí)的性能也無法和現(xiàn)實(shí)中的Master和Visa相比較。據(jù)了解,Visa的交易處理速度能達(dá)到4000筆/s,而2018~2019年開始運(yùn)行的公鏈項(xiàng)目,EOS的TPS最高峰有達(dá)到3900,平常也只有60~70左右,而大量PoS公鏈也只有100以內(nèi)的TPS,這樣的TPS針對(duì)分布式網(wǎng)絡(luò)來說,已經(jīng)算是比較高的,但是還是不能滿足當(dāng)今顯示的商業(yè)需要。
當(dāng)人們看到了PoS共識(shí)能帶來的性能有限的情況下,基于PoS擴(kuò)容的方案也逐漸開始出現(xiàn),其中側(cè)鏈和zk-SNARKs是目前比較常見的兩種方案。
側(cè)鏈
側(cè)鏈解決擴(kuò)容是目前業(yè)界一起探索的方向,從閃電網(wǎng)絡(luò)開始,到Plasma,再到Cosmos,Polkadot這種由側(cè)鏈組成的項(xiàng)目,側(cè)鏈方案已經(jīng)開始慢慢從研究走到應(yīng)用當(dāng)中。
側(cè)鏈的解決辦法是將非必要的計(jì)算放在側(cè)鏈上計(jì)算,只把重要的狀態(tài)同步到主鏈。按照Cardano的設(shè)計(jì)方案,主鏈由于承擔(dān)著較為主要的價(jià)值傳輸,要設(shè)計(jì)的盡可能的簡(jiǎn)單,只有簡(jiǎn)單才能達(dá)到足夠的安全,而不會(huì)因?yàn)榇a太過于復(fù)雜審計(jì)不出bug,其他對(duì)安全不是更高優(yōu)先級(jí)的計(jì)算,可以統(tǒng)一放到側(cè)鏈上來計(jì)算,最后將側(cè)鏈計(jì)算的結(jié)果同步到主鏈即可,這樣很好的解決性能和安全的沖突問題,把三角問題放在了一個(gè)不同空間維度來解讀。
另外一個(gè)更深化的解決側(cè)鏈方案是類似Cosmos或者Polkadot的解決方案,Polkadot創(chuàng)建了一個(gè)萬鏈互聯(lián)中心,讓各個(gè)公鏈都變成了Polkadot的側(cè)鏈,這樣的Polkadot可以掛超過100條的側(cè)鏈,這種擴(kuò)容方案是指數(shù)級(jí)的,可以更好的承受計(jì)算壓力。當(dāng)然,這些所有的Polkadot“側(cè)鏈”同樣可以有自己的側(cè)鏈系統(tǒng),比如Loom項(xiàng)目的側(cè)鏈項(xiàng)目就形成了Cosmos的一個(gè)Zone,叫Plasmchain,并掛在了以太坊項(xiàng)目項(xiàng)目。
目前,側(cè)鏈的方案都在陸續(xù)開發(fā)當(dāng)中,碰到的主要困難在于安全問題,像Plasms這樣的側(cè)鏈如果掛在以太坊下面,需要考慮側(cè)鏈對(duì)于主鏈的安全問題,還有考慮主鏈的ETH跑到側(cè)鏈后是否可以追回的問題等等,這些問題都是目前在困擾著側(cè)鏈項(xiàng)目的,所以還沒有看到一條真正跑得很順的側(cè)鏈,實(shí)際的應(yīng)用上更是少之又少,比特幣的閃電網(wǎng)絡(luò)算是一個(gè),Omisego的Plasmachain也是一個(gè),但是他們的應(yīng)用實(shí)在太少了。
側(cè)鏈雖然是一個(gè)種很好的解決方案,但是離我們還有點(diǎn)1~2年,甚至更遠(yuǎn)的時(shí)間。
zk-SNARKs
zk-SNARKs,一種新型的零知識(shí)驗(yàn)證(零知識(shí)驗(yàn)證就是驗(yàn)證:我能證明我知道問題答案,但卻不用告訴你答案),簡(jiǎn)潔,不需要大量交互驗(yàn)證,不需要雙方在線,相對(duì)于傳統(tǒng)的驗(yàn)證方法,驗(yàn)證快,體積小。
最早運(yùn)用在Zcash上,于18年10月份升級(jí)成2.0版本——Zcash sapling,官方博客放出了兩個(gè)版本的對(duì)比圖,驗(yàn)證時(shí)間從37s縮減到7s,體積從大于3GB縮減到了40M以內(nèi),質(zhì)變。從此Zcash可以告別只有10%資源用于匿名交易的限制了。
業(yè)界對(duì)于zk-SNARKs的研究也從來沒停止過,但究其從大量的數(shù)學(xué)驗(yàn)證到工程實(shí)現(xiàn)太過于復(fù)雜的原因,實(shí)際發(fā)展的并不太盡如人意。
Tezos在2014年的白皮書里面表示,未來利用zk-SNARKs將匿名交易帶入Tezos的意向,Vatilik也早在16年12月Medium上發(fā)表了關(guān)于zk-SNARKs的系列文章,從數(shù)學(xué)方式到代碼層面做了詳細(xì)的解釋;Eli Ben Sasson,這個(gè)為再備受VaTIlik推薦的大神,其基于zk-SNARKs的STARK匿名算法,STARKWARE也正在這一方向上前行。
對(duì)于zk-SNARKs,匿名和擴(kuò)容似乎可以并存,因?yàn)?.0版本當(dāng)中,Zcash的博客這么描述,此次的提升:
This rough esTImate indicates an 80% reducTIon of proving TIme, and a 98% reduction in memory usage which is a key requirement for opening up mobile support for Zcash shielded addresses.
減少80%的驗(yàn)證實(shí)踐,98%的存儲(chǔ)。這個(gè)驗(yàn)證過程不確定是否可以用在Tezos的驗(yàn)證階段,在Tezos的1分鐘出塊過程中,出塊節(jié)點(diǎn)是提前選好的,從打包交易到廣播全網(wǎng)也很快,花費(fèi)最多的時(shí)間在32個(gè)驗(yàn)證簽名,如果zk能解決這個(gè)驗(yàn)證速度,將對(duì)性能有大的改善。
那zk-SNARKs的擴(kuò)容方案怎么實(shí)現(xiàn)不舍棄去中心化的前提下擴(kuò)容?
zk通過縮減驗(yàn)證體積,加快驗(yàn)證速度來提高性能,這是個(gè)數(shù)學(xué)解決方案。也就是說,通常區(qū)塊鏈廣播交易,需要所有驗(yàn)證人驗(yàn)證并簽名后,才能確定為真(有些鏈的簽名還不是最終確定性,F(xiàn)inality),這其中驗(yàn)證簽名的過程耗時(shí)過長(zhǎng),導(dǎo)致性能受到影響。
分片通過縮減簽名人數(shù),Cosmos通過指定人數(shù)的投票通過提前得到確定性,EOS通過減少驗(yàn)證人人數(shù)達(dá)到全部驗(yàn)證的快速度,這其中都是通過減少人數(shù)來達(dá)到的,而zk縮減的是驗(yàn)證過程,而不是人數(shù),那么確實(shí)是可以保證之前的去中心化的情況下,提高性能的。
zk本身是一個(gè)零知識(shí)驗(yàn)證,這個(gè)驗(yàn)證過程本用于隱私交易,但目前看來本地算法生成驗(yàn)證材料的速度要比網(wǎng)絡(luò)傳播驗(yàn)證要高了去了,這就是zk擴(kuò)容的本質(zhì)了。就像現(xiàn)在的edxxxx算法生成公私鑰對(duì)一樣,不聯(lián)網(wǎng)就生成了,毫秒級(jí)別的,如果把大量驗(yàn)證的過程變成zk的本地算法,提交廣播驗(yàn)證的數(shù)據(jù)壓縮到非常小的范圍,那性能的提高可見會(huì)是指數(shù)級(jí)的。
當(dāng)然,zk的算法同樣中所周知的缺點(diǎn):在零知識(shí)證明協(xié)議部署前,需要設(shè)置一些初始參數(shù),這些參數(shù)將在每一次證明與驗(yàn)證中被用到。參數(shù)生成后,參數(shù)生成算法運(yùn)行中使用的所有數(shù)據(jù)必須銷毀,否則整個(gè)協(xié)議將不安全。
那么這次參數(shù)的生成必然會(huì)有一個(gè)來源,這個(gè)來源如果是偽隨機(jī)數(shù)還不能被找到規(guī)律,如果是真隨機(jī)數(shù)還得頭大,且找到可靠人來執(zhí)行,兩種來源的弊端是明顯的,那么這個(gè)問題就出現(xiàn)了:我們?cè)趺聪嘈乓粋€(gè)這么依賴的公共參數(shù)的系統(tǒng)協(xié)議呢?
隨著協(xié)議的發(fā)展,我們看到了解決該辦法的兩種方案
允許人,無人數(shù)限制,無門檻的進(jìn)入到提交參數(shù)的過程中,并公然銷毀數(shù)據(jù)(如Zcash 2.0上線前做的The Power of Tau活動(dòng),有興趣的小伙伴可以google一下這個(gè)有意思的活動(dòng))Eli Ben-Sasson 也提出了另一個(gè)具有競(jìng)爭(zhēng)力的零知識(shí)證明協(xié)議 STARKs,該協(xié)議可不需要考慮可信設(shè)置的問題,并依賴于較少的數(shù)學(xué)猜想。
目前的發(fā)展也在進(jìn)行當(dāng)中,這也是為什么我在上面說zk有機(jī)會(huì)成為既可以保證去中心化的同事,又可以進(jìn)行擴(kuò)容的點(diǎn)了??上驳氖?,第一個(gè)方案已經(jīng)在Zcash上踐行,并且運(yùn)行快幾個(gè)月還比較完好,所以,我們還是有理由期待zk在PoS其他項(xiàng)目上的擴(kuò)容的。
側(cè)鏈解決的是數(shù)據(jù)的分層計(jì)算,zk這種方案是盡可能減少數(shù)據(jù)之間的交互,盡可能的較少數(shù)據(jù)大小,所以兩種方法是不同維度的解決方案,自然,zk也可以用到側(cè)鏈上去,減少側(cè)鏈交互,提高性能?,F(xiàn)在區(qū)塊鏈的性能優(yōu)化在減少底層架構(gòu),和上層數(shù)據(jù)交換上是一個(gè)大方向,有很大的優(yōu)化空間。
第五章 PoS中的激勵(lì)與懲罰
為什么PoS系統(tǒng)當(dāng)中需要激勵(lì)?沒有激勵(lì)行不行?多少激勵(lì)才足夠?
區(qū)塊鏈的定義來源比特幣,比特幣立志于成為一種無政府主義的電子貨幣,擺脫中心化集權(quán)的控制,并且給所有人帶來自由。自始至終,比特幣給廣大人們帶來的印象就是去中心化和自由,但是,社會(huì)發(fā)展到今天,我們已經(jīng)習(xí)慣了這種中心化思想形成的社會(huì)結(jié)構(gòu)。國(guó)家,公司,乃至家庭,都是不同形態(tài)下的中心。當(dāng)我們要把去中心化當(dāng)成主流的時(shí)候,我們會(huì)發(fā)現(xiàn),我們要付出的代價(jià),其實(shí)不小。特別在我們享受比特幣帶來的去中心化思想時(shí),往往我們忽略的是自由背后所帶來的成本。
作為一個(gè)去中心化的社區(qū),比特幣需要人運(yùn)行程序來維護(hù),而且越多的人維護(hù),系統(tǒng)越安全。以往中心化公司運(yùn)行的成本,其實(shí)相當(dāng)于均攤到了維護(hù)網(wǎng)絡(luò)的每個(gè)人。那么這些人的成本誰來承擔(dān)?難不成都是心甘情愿自掏腰包嗎?
不太可能,所以比特幣的分發(fā)成為了激勵(lì)手段,以及比特幣背后的自由思想所帶來的憧憬,給所有維護(hù)的人們畫了一個(gè)大餅,這個(gè)大餅帶著自由之光,照亮了人們對(duì)于未來暴富的無限遐想。所以,我們看到的是,比特幣實(shí)現(xiàn)了去中心化的自由,用了一種激勵(lì)的手段解決人們前期所付出的成本,這個(gè)可能不對(duì)等,但是確實(shí)一種很好的價(jià)值背書。
那么我們就不難理解了,作為PoW后時(shí)代的PoS,自然同樣需要激勵(lì)來維護(hù)去中心化所帶來的成本。但是由于PoW算力挖礦的方式,被PoS的權(quán)重挖礦方式所替代,意味著網(wǎng)絡(luò)運(yùn)行初期,就需要有足夠的幣來進(jìn)行挖礦。同時(shí),足夠多的幣才能像足夠多的算力一樣,更安全的保證去中心化的網(wǎng)絡(luò)運(yùn)行,那么PoS的激勵(lì)不能像比特幣一樣,由剩余總量作為獎(jiǎng)勵(lì),而是通過增發(fā)通脹作為激勵(lì)了。
增發(fā)是PoS上最為常見的一種激勵(lì)手段,常年保持一個(gè)比較合理的增發(fā)率,來激勵(lì)礦工有足夠多的動(dòng)力維護(hù)網(wǎng)絡(luò)。網(wǎng)絡(luò)的初期發(fā)展特別重要,所以通常,線性改變的增發(fā)率會(huì)把初始值設(shè)置的足夠大,以此來吸引更多的驗(yàn)證人。同時(shí),這也作為吸引已存在代幣參與到(Staking)網(wǎng)絡(luò)中來驗(yàn)證區(qū)塊的重要點(diǎn)子,不參加網(wǎng)絡(luò)安全驗(yàn)證的代幣會(huì)被增發(fā)的代幣稀釋,這就是著名的PoS稀釋性通脹的概念。
而后,增發(fā)率/通脹率會(huì)成為一個(gè)變化值,至于是多少合適,沒有人能準(zhǔn)確得出來。現(xiàn)在世界里面的貨幣政策,通常是伴隨是通脹和緊縮同時(shí)發(fā)生的,在合適的時(shí)間使用合適的貨幣政策,是目前我們所能認(rèn)識(shí)到的。比特幣給我們帶來的緊縮手段,PoS帶來的通脹手段,都是區(qū)塊鏈?zhǔn)澜缋锩娴囊唤M實(shí)驗(yàn)。所以很多PoS公有鏈并沒有把通脹率定死,而是初期定值,然后定價(jià)權(quán)交由社區(qū)定奪。
以太坊ETH把通脹率定在了年3%,Tezos和EOS把通脹率都定在了5%左右,Rchain把通脹率定在了7%,Cosmos把通脹率定在了7%~22%。目前來看,2019年要上主網(wǎng)的項(xiàng)目中,通脹率初始值都在5%~10%,看來是業(yè)界普遍的認(rèn)同。
倒不是說這個(gè)是最終的答案,或者說根本沒有人知道答案,真實(shí)的世界里總是復(fù)雜的,所以,拍腦袋決定是也是一種好的辦法,而只要有一個(gè)人拍了腦袋,后面跟著的人連腦袋都不要拍,跟著就好了。
激勵(lì)
PoS上的激勵(lì)機(jī)制從比特幣衍生而來,比特幣需要礦工維護(hù)網(wǎng)絡(luò)的運(yùn)行和去中心化,那么激勵(lì)礦工參與網(wǎng)絡(luò)是需要的,受利益驅(qū)使,人們會(huì)追逐礦工出塊所帶來的利潤(rùn),比特幣將鑄幣分發(fā)做成一種激勵(lì)機(jī)制,使用固定總量,分發(fā)稀缺性來吸引大量礦工涌入,成為比特幣網(wǎng)絡(luò)維護(hù)的一員。
PoS共識(shí)網(wǎng)絡(luò)也一樣需要維護(hù),但是PoS的激勵(lì)和比特幣的激勵(lì)不一樣,PoS是新增鑄幣(PoS的存量已經(jīng)在初始分發(fā)時(shí)分發(fā)出去了,相當(dāng)于一些PoW項(xiàng)目里面的預(yù)挖),比特幣是存量鑄幣,所以PoS的通脹設(shè)計(jì)和比特幣的存量分發(fā)設(shè)計(jì)有些許不同,造就了兩種激勵(lì)本質(zhì)上的不一樣。
PoS共識(shí)中,激勵(lì)分為兩個(gè)重要階段
· 啟動(dòng)
· 去中心化
PoS網(wǎng)絡(luò)啟動(dòng)之初的通脹設(shè)計(jì),是PoS網(wǎng)絡(luò)重中之重,為了防止初始Stake的不足,導(dǎo)致的攻擊成本過低問題,初始的激勵(lì)要足夠大,吸引人們將代幣進(jìn)行Staking,否則,短程攻擊可能會(huì)發(fā)生,交易激勵(lì)可能會(huì)被篡改。一般情況下,啟動(dòng)主網(wǎng)時(shí),開發(fā)團(tuán)隊(duì)會(huì)利用初始分發(fā)中留給自己的代幣(一般是20%)先行Staking維護(hù)網(wǎng)絡(luò),同時(shí)禁止其他節(jié)點(diǎn)進(jìn)入,在保證整個(gè)網(wǎng)絡(luò)運(yùn)行一段時(shí)間后(一般是小一個(gè)月),再開放給所有持幣人。
而在網(wǎng)絡(luò)順利啟動(dòng)之后,去中心化又成為了一個(gè)重要的激勵(lì)方向,為了防止大戶更大的情況出現(xiàn),很多項(xiàng)目會(huì)在獎(jiǎng)勵(lì)激勵(lì)上做文章,比如單一節(jié)點(diǎn)的總量超過整體總量的1%時(shí),超出部分將會(huì)的線性較少的獎(jiǎng)勵(lì),或者不會(huì)獲得獎(jiǎng)勵(lì)。比如有一個(gè)大戶持幣量1.2%,那么0.2%的量是獲得不了獎(jiǎng)勵(lì)的。這樣可以有效的控制PoS中的大戶恒大的問題。
其次,很多PoS項(xiàng)目會(huì)致力于將節(jié)點(diǎn)出塊,驗(yàn)證程序做得足夠簡(jiǎn)單,依賴的設(shè)備隨手可得,讓持幣人能簡(jiǎn)單的參與到項(xiàng)目Staking中來,也會(huì)使得項(xiàng)目更進(jìn)一步的去中心化,而不會(huì)因?yàn)闊o技能,無設(shè)備而導(dǎo)致無法參與網(wǎng)絡(luò)運(yùn)行
PoS中的激勵(lì)是通脹型的,通脹的比例作為參數(shù)被寫到了創(chuàng)世區(qū)塊中,作為可改參數(shù),意味著社區(qū)有權(quán)利對(duì)通脹率進(jìn)行修改,從而滿足不同時(shí)代下的需求。區(qū)塊鏈項(xiàng)目活的時(shí)間還不夠長(zhǎng),所以這個(gè)數(shù)字目前還未曾被修改過。不同項(xiàng)目的通脹率會(huì)在一個(gè)范圍內(nèi)(2%~20%)浮動(dòng),初始值在5%~7%,或有線性減少或是線性增加的趨勢(shì),來保證合理性。
激勵(lì)的具體行為
一般PoS公有鏈,為了維護(hù)網(wǎng)絡(luò)不會(huì)暫停(Halt)或者是崩潰(Crash),會(huì)盡可能的激勵(lì)出塊人正確行為,同時(shí)會(huì)對(duì)不良行為給與懲罰。這和現(xiàn)實(shí)中正向引導(dǎo),反向打擊的邏輯是一樣的。區(qū)塊鏈的區(qū)塊是按一定時(shí)間一個(gè)個(gè)接著形成并連在一起的,區(qū)塊鏈的數(shù)據(jù)是保證正確并不能被修改的,所以我們可以看到一些具體被激勵(lì)的行為,包括
· 出塊(驗(yàn)證,打包交易)
· 簽名(驗(yàn)證被打包的交易)
· 披露(披露用于生成出塊人選舉的隨機(jī)數(shù))
· 譴責(zé)(舉報(bào)出塊人不良行為)
· 在線(長(zhǎng)期保持節(jié)點(diǎn)在線)
· 治理(參與鏈上治理行為)
所有的行為對(duì)于區(qū)塊鏈的維護(hù)是有影響的,只要這些行為被正確執(zhí)行,很大概率下,區(qū)塊鏈會(huì)一直運(yùn)行下去。當(dāng)然,隨著區(qū)塊鏈的發(fā)展,更多新的技術(shù)會(huì)被帶入到現(xiàn)有區(qū)塊鏈中來,那么這些新的技術(shù)又會(huì)帶來新的問題,導(dǎo)致區(qū)塊鏈停止運(yùn)行,甚至崩潰,屆時(shí)新的解決辦法又會(huì)被引入進(jìn)來。
除了以上約束外,PoS中的激勵(lì)中還存在著一些隱患,這些隱患可能還隱藏的比較深,目前沒法對(duì)其做約束或者無法約束。
另外,POS激勵(lì)有很多自己的問題,比如大戶問題,選舉造假問題等,同樣,相對(duì)于比特幣,PoS激勵(lì)和比特幣激勵(lì)也有著相同的一些問題,如激勵(lì)不足,激勵(lì)單一。下面我來說一下幾個(gè)和比特幣相同的問題。
激勵(lì)不足
穩(wěn)定的網(wǎng)絡(luò)依賴于穩(wěn)定的礦工群體以及穩(wěn)定的代幣參與(Stake),兩者都依賴于系統(tǒng)代幣對(duì)法幣穩(wěn)定的匯率,或者是說有不斷上漲預(yù)期,這樣才能讓整個(gè)激勵(lì)得以繼續(xù)。從2012年到現(xiàn)在,Peercoin,Nxt,Blackcoin等,我們看到了太多項(xiàng)目因?yàn)閹艃r(jià)掉的太多,導(dǎo)致激勵(lì)不足的情況出現(xiàn)了。這樣會(huì)形成一個(gè)惡性循環(huán),當(dāng)系統(tǒng)對(duì)驗(yàn)證人的要求更高,驗(yàn)證人為此投入的成本越多的時(shí)候,我們發(fā)現(xiàn),幣價(jià)無法補(bǔ)足人們?cè)谄渫度氲馁Y金,這使得網(wǎng)絡(luò)的順利維護(hù)有不好的預(yù)期。
在法幣本位的今天,代幣作為激勵(lì)的方案是區(qū)塊鏈主流,但卻不是商業(yè)主流。當(dāng)驗(yàn)證人成為一種專業(yè)的工種之后,辛勤工作卻不能養(yǎng)家糊口的話,是比較諷刺的。2017年到啟動(dòng)的牛市,把很多人帶入到了幣本位的道路上,但是這些人很快就發(fā)現(xiàn),幣本位在短期內(nèi)基本都是虧錢的,虧法幣的,這點(diǎn)對(duì)于一個(gè)創(chuàng)業(yè)公司來說,太致命了。
所以,代幣作為激勵(lì)的手段,經(jīng)常會(huì)出現(xiàn)激勵(lì)不足的問題,如果在1~3年的時(shí)間里面,不能帶來足夠的激勵(lì)的話,那么驗(yàn)證人很容易會(huì)離開這個(gè)網(wǎng)絡(luò)。
激勵(lì)單一
激勵(lì)不足的另外一面就是激勵(lì)太單一,代幣激勵(lì)是一方面,另外一個(gè)方面是驗(yàn)證人獲得獎(jiǎng)勵(lì)的機(jī)會(huì)。目前,提供給驗(yàn)證人獲得獎(jiǎng)勵(lì)的主要機(jī)會(huì)就是出塊和驗(yàn)證(不同的鏈有別的一些細(xì)微的機(jī)會(huì)設(shè)置),這和該驗(yàn)證人持有的幣量權(quán)重或者是接受委托的幣量權(quán)重是息息相關(guān)的,導(dǎo)致的結(jié)果就是驗(yàn)證人如果幣量權(quán)重不夠高,那么他獲得的獎(jiǎng)勵(lì)是很少的。
比如一個(gè)驗(yàn)證人持幣量持幣量只占據(jù)整個(gè)網(wǎng)絡(luò)中代幣的0.01%,那么他只能獲得整個(gè)網(wǎng)絡(luò)0.01%的出塊和驗(yàn)證機(jī)會(huì),別以為0.01%已經(jīng)很少了,PoS系統(tǒng)中小于該總量的人大有人在,這和世界上,20%的人占據(jù)了世界總量80%的財(cái)富是一個(gè)道理。PoS代幣中,估值往往是幾十億美元,0.01%就是幾千萬美元,有多少人能有幾千萬美金的?所以,占據(jù)總量0.000001%就很不錯(cuò)了,那這0.000001%對(duì)應(yīng)出塊獎(jiǎng)勵(lì)就很少了。
所以,我們可以看到,這已經(jīng)天然的形成一定的門檻,這個(gè)門檻會(huì)因?yàn)榧?lì)的不足以及單一,使得幣量少的驗(yàn)證人慢慢離開網(wǎng)絡(luò),最后只剩下頭部的玩家,整個(gè)系統(tǒng)又變成了有錢人的天下,強(qiáng)者恒強(qiáng)。
這和我們?cè)诒忍貛派峡吹降牡V池是境況是一樣的。
無法解決的問題?
目前的各種嘗試當(dāng)中,沒有一個(gè)方案可以完全解決此類問題,大都為嘗試性的解決,但觸動(dòng)不了根基。本質(zhì)上,無法解決的問題是貧富差距問題,任何事情一旦和錢掛鉤,就無法擺脫別人已經(jīng)比你有錢的事實(shí),企圖劫富濟(jì)貧,那是武俠小說,不是現(xiàn)實(shí)世界。
中本聰愿景是讓所有有電腦的人參與到比特幣的挖礦中來,這本質(zhì)上就把一部分沒有能力購買電腦的人隔離開了,所以世界上無法做到完全的公平,在去中心化的世界里面,也一樣。
但是,我仍然很喜歡看到區(qū)塊鏈?zhǔn)澜缋锩妫瑸榇烁冻龅膰L試。比如Cosmos的官方客戶端會(huì)針對(duì)頭部驗(yàn)證人做出警示提醒,或是消減平均的收益率,又比如Tezos里面的接受委托和抵押金息息相關(guān),自己沒有抵押金,則無法獲得獎(jiǎng)勵(lì)。這些都是防止強(qiáng)者恒強(qiáng)的手段,雖然觸發(fā)不到根基,但是有一定的作用。
懲罰
比特幣里面對(duì)礦工是沒有懲罰的,硬要說有懲罰,那就是礦工挖出來了孤塊。孤塊是比特幣里面被拋棄的塊,合法,工作量證明足夠,只不過是因?yàn)閺V播速度或是計(jì)算問題等原因,并沒有被大部分節(jié)點(diǎn)所接收到,而是被另外一個(gè)塊替代了。挖出來的孤塊是沒有比特幣獎(jiǎng)勵(lì)的,對(duì)應(yīng)的礦工需要自己承擔(dān)算力成本,所以競(jìng)爭(zhēng)條件下,付出了算力卻沒得到獎(jiǎng)勵(lì),也算是變相的一種“懲罰”。
而我在這里說的懲罰,是PoS中獨(dú)有的懲罰機(jī)制,叫Slash,不同于PoW的“懲罰”。
PoS中的懲罰機(jī)制是用來懲罰PoS中礦工的不良行為的。具體的不良行為由不同的鏈自己決定,雖有不同,但大致都是一個(gè)原則,那就是保證系統(tǒng)穩(wěn)定,任何嘗試分叉,雙簽,和長(zhǎng)期不在線的礦工,基本上都會(huì)被懲罰。當(dāng)然,這里的懲罰不單單是和比特幣一樣的沒有獎(jiǎng)勵(lì),同時(shí)還會(huì)扣除出塊人/驗(yàn)證人在系統(tǒng)里面交的抵押金,相當(dāng)于是雙重懲罰。
抵押金是PoS懲罰機(jī)制中獨(dú)有的設(shè)計(jì),抵押金的引入是解決PoS中多方面問題的一個(gè)綜合解決方案。在PoS共識(shí)中,礦工由算法根據(jù)持幣量權(quán)重選出,這些礦工在出塊時(shí),作惡的成本要比PoW小的多,因?yàn)榭梢詿o限制的出塊,出多個(gè)塊,簽名分叉鏈等,不誠實(shí)的礦工會(huì)想盡辦法作惡來獲取更多的利益。
在沒有抵押金的時(shí)代,這個(gè)動(dòng)機(jī)顯得十分充足,2012年~2014年的那些年代,礦工幾乎可以隨意的“攻擊”這個(gè)網(wǎng)絡(luò),僥幸來欺騙系統(tǒng)來獲得更多的獎(jiǎng)勵(lì)。PoW里面出塊是有成本的,需要消耗算力,電力等,礦工好不容易獲得了出塊機(jī)會(huì),如果嘗試攻擊系統(tǒng),一旦被其他礦工識(shí)別出來,失去獎(jiǎng)勵(lì)的成本比作惡獲得的獎(jiǎng)勵(lì)要大,所以這么做就得不償失了。而PoS中,出塊人的自由度是沒有成本可言的,本質(zhì)上就和PoW區(qū)分開了,這就是PoS里面著名的Nothing at Stake的問題(這個(gè)問題會(huì)在第九章節(jié)有具體描述)。
所以引入抵押金后,系統(tǒng)會(huì)對(duì)礦工行為進(jìn)行檢測(cè),一旦發(fā)現(xiàn)檢測(cè)不法行為,系統(tǒng)將會(huì)扣除礦工的抵押金。而礦工因?yàn)閾?dān)心抵押金會(huì)被扣除,自然也不敢作惡了。
Slash
2014年1月,Vitalik Burtain首次提及了Slasher,后Slash這種手段被廣泛應(yīng)用于PoS共識(shí)當(dāng)中,作為了PoS中解決網(wǎng)絡(luò)安全的一個(gè)重要手段。Slasher可以被翻譯為“劊子手”或者扣除人,Slash可以被翻譯為削減(開支),或者意譯為扣除抵押金。
當(dāng)時(shí)的區(qū)塊世界,PoW還是主流的共識(shí),很多項(xiàng)目在開始往PoS共識(shí)轉(zhuǎn),但也是這時(shí)候PoS上一個(gè)重要的缺陷(Nothing at Stake)開始暴露出來,這種缺陷會(huì)導(dǎo)致鏈分叉,從而使得雙花攻擊成功的概率大大提高。
Vitalik提議用懲罰的手段將出塊人的企圖扼殺在搖籃當(dāng)中,這種方法叫做Slasher。區(qū)塊鏈對(duì)分叉或者重復(fù)提交行為進(jìn)行檢測(cè),一旦檢測(cè)出來,該行為就會(huì)被懲罰(Slash),而懲罰的抵押金意味著Nothing at Stake變成Something at Stake。
那么Somethin at Stake中的Something指的就是現(xiàn)在抵押金(bond,或者叫secure deposit)了,抵押金作為出塊人出塊的基礎(chǔ),誠實(shí)的出塊人并不會(huì)害怕抵押金被扣除(Slash),因?yàn)樗麄儾粫?huì)去篡改程序,進(jìn)行雙花攻擊,而不誠實(shí)的出塊人因?yàn)榈盅航鹂赡軙?huì)被扣除的可能性,動(dòng)機(jī)減弱。
Slash的抵押金會(huì)被回收到系統(tǒng)中,不同系統(tǒng)對(duì)Slash的抵押金的處理不同,一般情況下,會(huì)全部銷毀(burn),一些系統(tǒng)有舉報(bào)人,如Tezos,Polkadot,這些系統(tǒng)Slash的抵押金會(huì)把少部分給舉報(bào)人,大部分銷毀。還有一種設(shè)計(jì)就是一部分銷毀,一部分流入基金會(huì)的統(tǒng)一池子,用于后續(xù)的社區(qū)/項(xiàng)目資助。
但是,Vitalik并沒有在2014年發(fā)表的博客中介紹Slasher具體的實(shí)現(xiàn),也沒有提到抵押金,只是闡述了一下Slash的方法論。后Slasher經(jīng)過4年左右時(shí)間的發(fā)展,已經(jīng)逐漸發(fā)展成為PoS共識(shí)當(dāng)中一個(gè)重要的標(biāo)配功能。
Slash的具體行為
現(xiàn)在我們知道了Slash的對(duì)象是出塊人,Slash的結(jié)果是抵押金被扣除,獎(jiǎng)勵(lì)也無法獲得。下面我來說一下Slash的具體行為。不同系統(tǒng)對(duì)于Slash的行為不同,Slash的多少也不相同。我列舉了一下通用的會(huì)被Slash的行為,如
雙塊:指在同一個(gè)高度下,一個(gè)出塊人出多個(gè)塊
雙簽:指在同一個(gè)高度下,一個(gè)驗(yàn)證人驗(yàn)證了不同鏈上上的塊;或者指在同一高度下,一個(gè)驗(yàn)證人在一條鏈上的同一個(gè)塊,簽多次名
有些項(xiàng)目還有把節(jié)點(diǎn)在線時(shí)間和投票情況作為可能會(huì)被Slash的行為,對(duì)于節(jié)點(diǎn)要求是比較嚴(yán)格的,比如Cosmos。
大體上,Slash的行為并不會(huì)很多,或者說不敢有太多,畢竟Slash還是新鮮事物,凡是有兩面,Slash不好,過度,會(huì)對(duì)出塊人生態(tài)造成傷害,特別是區(qū)塊鏈項(xiàng)目并不成熟的情況下,發(fā)生誤殺的話,很難處理。所以,我覺得把Slash用作為分叉殺手锏就可以了,其他的一些行為可以在區(qū)塊鏈項(xiàng)目越來越成熟后再慢慢增加。
Slash多少?
那么抵押金交多少合適呢?扣除抵押金的時(shí)候扣除多少合理呢?這涉及到一個(gè)計(jì)算問題,有兩種算法:
第一種:?jiǎn)螇K抵押,也就是只要是做涉及到獎(jiǎng)勵(lì)的行為的時(shí)候,就需要提前按比例交抵押金
第二種:整體抵押,也就是在做涉及獎(jiǎng)勵(lì)的行為之前,你的持幣量是全部當(dāng)成抵押金的。
在Slash發(fā)生的時(shí)候,第一種是扣除單個(gè)行為所交的所有抵押金,第二種是扣除全部抵押金的一部分,視情節(jié)嚴(yán)重程度來確定。
其實(shí)兩種算法有相似之處,最終的Slash結(jié)果都是落在了抵押金的按比例扣除上。而實(shí)際中,兩種算法對(duì)社區(qū)生態(tài)是有不同影響的。我們先說相似之處的抵押金情況,我們舉個(gè)例子,有一條PoS公有鏈的參數(shù)如下:
年通脹率 5%
初始供應(yīng)量 10億
區(qū)塊時(shí)間間隔 10s
每個(gè)區(qū)塊獎(jiǎng)勵(lì)=10億*5%/(365*24*60*(60/10)*10)=1.6
一個(gè)礦工持幣量1億,那么他需要交多少抵押金呢?我們?cè)倭袔讉€(gè)系統(tǒng)參數(shù)
抵押金贖回時(shí)間 15天
單塊抵押金為51.2
抵押的幣量=(15*24*60*(60/10)*10)*51,2=66355200
抵押率=66355200/10億=6.6%
個(gè)人出1個(gè)塊需要抵押金=1億*6.6%=6635520
其中單塊抵押金需要51.2個(gè)代幣是按照Tezos的抵押算法算出來的,我并不知道為什么Tezos單個(gè)塊的抵押金是512XTZ,我大概的猜想是為了算出接近8%個(gè)左右的安全抵押率。如果猜想正確的話,PoS抵押金我們認(rèn)為會(huì)在整體持幣量的8%左右。當(dāng)然,Tezos也可能拍腦袋決定的。
如果發(fā)生Slash,按照第一種抵押方式,該個(gè)人會(huì)被扣除6635520個(gè)代幣,但是1億里面其他的代幣并不會(huì)受影響,可以繼續(xù)進(jìn)行出塊。第二種抵押方式,1億個(gè)代幣都在抵押中,只不過在下一個(gè)機(jī)會(huì)獲得之前,他的代幣會(huì)被扣除6635520個(gè)。
激勵(lì)和懲罰是PoS有別于PoW的另外兩個(gè)點(diǎn),個(gè)別鏈在設(shè)計(jì)上都獨(dú)具匠心,這個(gè)我在第十章中會(huì)有具體的解釋。