區(qū)塊鏈世界通過共識(shí)算法、加密、點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)以及獎(jiǎng)勵(lì)機(jī)制等,可以形成一個(gè)自治的社區(qū),形成一個(gè)通過挖礦機(jī)制(POW)來達(dá)成一種不通過中心機(jī)構(gòu)來達(dá)成的信任,最終實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的價(jià)值流通。談到不同的共識(shí)機(jī)制,就有很多話題可以說了,甚至可以說區(qū)塊鏈的發(fā)展就一直伴隨著共識(shí)機(jī)制以及算法的改進(jìn),那我們就來介紹一下不同的共識(shí)機(jī)制、算法及其原理:其實(shí)關(guān)于共識(shí)機(jī)制和算法,現(xiàn)在經(jīng)常被混于一談,但是要分辨開來的話,那就是機(jī)制主要是指POW,POS與DPOS,算法則主要指的是POW下的各種算法。在EKT中Token鏈?zhǔn)且粋€(gè)并行多鏈的結(jié)構(gòu),多鏈多共識(shí),共享用戶基礎(chǔ),這也意味著使用EKT公鏈,可以把Token鏈和Dapp鏈分離,并自由的選擇共識(shí)算法和加密算法。首先我們介紹一下POW機(jī)制里所采用的各種算法:
【Hash函數(shù)】
如上所言,我們經(jīng)常說的POW算法本質(zhì)是一個(gè)Hash函數(shù)。Hash函數(shù)是一個(gè)無比神奇的東西,說他替中本聰打下了半壁江山一點(diǎn)不為過,學(xué)習(xí)比特幣應(yīng)該從學(xué)習(xí)Hash函數(shù)入手,理解了Hash函數(shù)再去學(xué)比特幣原理將事半功倍,不然將處處感覺混沌,難以開竅。而中本聰也將Hash函數(shù)的所有特性使用得淋漓盡致:已經(jīng)有很多Hash函數(shù)被設(shè)計(jì)出來并廣泛應(yīng)用,不過Hash函數(shù)一般安全壽命都不長(zhǎng),被認(rèn)為安全的算法往往沒能使用多久就被成功攻擊,新的更安全的算法相繼被設(shè)計(jì)出來,而每一個(gè)被公認(rèn)為安全可靠的算法都有及其嚴(yán)格的審計(jì)過程。在區(qū)塊鏈?zhǔn)澜缰形覀兘?jīng)常說某某幣發(fā)明了某種算法,其實(shí)主要都是使用那些被認(rèn)證過的安全算法,或是單獨(dú)使用,或是排列組合使用。
礦工在處理交易數(shù)據(jù)(對(duì)數(shù)據(jù)也是進(jìn)行哈希)的同時(shí)不斷的進(jìn)行哈希計(jì)算,求得一位前23位為0的哈希值,這個(gè)值成為nonce黃金數(shù)。當(dāng)全網(wǎng)有一位礦工哈希出nonce時(shí),他就會(huì)把自己打包的區(qū)塊公布出去,其他節(jié)點(diǎn)收到區(qū)塊驗(yàn)證區(qū)塊后就會(huì)一致性認(rèn)為這個(gè)區(qū)塊接到了區(qū)塊鏈上,就繼續(xù)進(jìn)行下一個(gè)區(qū)塊的打包和哈希計(jì)算。在這個(gè)過程中,中本聰是通過算力的比拼犧牲了一部分最終一致性(因?yàn)闀?huì)有分叉的產(chǎn)生)并且需要等待多個(gè)確認(rèn),但是這種簡(jiǎn)單暴力的方法卻保證了整個(gè)區(qū)塊鏈系統(tǒng)的合法性,而且把區(qū)塊鏈系統(tǒng)的健壯性提升到極致,就算全網(wǎng)只剩下一個(gè)節(jié)點(diǎn)運(yùn)行,這個(gè)區(qū)塊鏈系統(tǒng)還是會(huì)繼續(xù)運(yùn)行下去。
最后POW也充分提高了區(qū)塊鏈系統(tǒng)的安全性,依靠51%攻擊理論去破壞區(qū)塊鏈系統(tǒng)是在以往被認(rèn)為只有政府或者瘋子才會(huì)采取的方法。但最近似乎在比特黃金這個(gè)項(xiàng)目上,有人真的嘗試控制50%以上算力并改寫了。
【SHA256算法】
SHA (Secure Hash Algorithm,譯作安全散列算法) 是美國國家安全局 (NSA) 設(shè)計(jì),美國國家標(biāo)準(zhǔn)與技術(shù)研究院 (NIST) 發(fā)布的一系列密碼散列函數(shù),經(jīng)歷了SHA-0,SHA-1,SHA-2,SHA-3系列發(fā)展。NSA于2007年正式宣布在全球范圍內(nèi)征集新新一代(SHA-3)算法設(shè)計(jì),2012年公布評(píng)選結(jié)果, Keccak算法最終獲勝成為唯一官方標(biāo)準(zhǔn)SHA-3算法,但還有四種算法同時(shí)進(jìn)入了第三輪評(píng)選,分別是:BLAKE, Gr?STL, JH和SKEIN,這些算法其實(shí)也非常安全,而且經(jīng)受審查,被各種競(jìng)爭(zhēng)幣頻繁使用。比特幣采用SHA256算法,該算法屬于SHA-2系列,在中本聰發(fā)明比特幣時(shí)(2008)被公認(rèn)為最安全最先進(jìn)的算法之一。除了生成地址中有一個(gè)環(huán)節(jié)使用了REPID-160算法,比特幣系統(tǒng)中但凡有需要做Hash運(yùn)算的地方都是用SHA256。
隨著比特幣被更多人了解,大家開始好奇中本聰為何選擇了SHA256,同時(shí)對(duì)SHA256的安全性發(fā)表各種意見,SHA256妥妥經(jīng)受了質(zhì)疑,到目前為止,沒有公開的證據(jù)表明SHA256有漏洞,SHA256依然牢牢抗住保衛(wèi)比特幣安全的大旗。當(dāng)然大家心里都明白,沒有永遠(yuǎn)安全的算法,SHA256被替代是早晚的事,中本聰自己也說明了算法升級(jí)的必要和過程。
【SCRYPT算法】
后來隨著顯卡挖礦以及礦池的出現(xiàn),社區(qū)開始擔(dān)心礦池會(huì)導(dǎo)致算力集中,違背中本聰“一CPU一票”的最初設(shè)計(jì)理念。在那段時(shí)間,中心化的焦慮非常嚴(yán)重,討論很激烈,比特幣一次又一次“被死亡”,直到現(xiàn)在,針對(duì)礦池是否違背去中心化原則的爭(zhēng)論仍在繼續(xù)。無論如何,有人將矛頭指向SHA256,認(rèn)為是算法太容易導(dǎo)致礦機(jī)和礦池出現(xiàn),并試圖尋找更難的算法。恰逢其時(shí),使用SCRYPT算法的萊特幣(Litecoin)橫空出世。
據(jù)說SCRYPT是由黑客開發(fā),由于沒有得到諸如SHA系列的嚴(yán)格的安全審查和全面論證,一直沒被廣泛推廣使用。與SHA256算法相比,SCRYPT占用的內(nèi)存更多,計(jì)算時(shí)間更長(zhǎng),并行計(jì)算異常困難,對(duì)硬件要求很高。很顯然,SCRYPT算法具有更強(qiáng)的抵御礦機(jī)性,萊特幣還將區(qū)塊時(shí)間改為2.5分鐘,在那個(gè)山寨幣還鳳毛麟角年代,萊特幣依靠這兩點(diǎn)創(chuàng)新大獲成功,長(zhǎng)期穩(wěn)坐山寨幣第一寶座位置。后來有人在SCRYPT的基礎(chǔ)上稍作修改形成Scrypt –N算法,改進(jìn)思路都一樣,都是追求更大的內(nèi)存消耗和計(jì)算時(shí)間,以有效阻止ASIC專用礦機(jī)。很快,萊特幣的成功催生了各種各樣的算法創(chuàng)新,2012至2014年間,算法創(chuàng)新一直都是社區(qū)討論的熱門話題,每一個(gè)使用創(chuàng)新算法的幣種出現(xiàn),都能刮起一陣風(fēng)波。
【串聯(lián)算法】
重新排列組合是人類一貫以來最常用的創(chuàng)新發(fā)明方法。很快,有人不滿足于使用單一Hash函數(shù),2013年7月,夸克幣(Quark)發(fā)布,首創(chuàng)使用多輪Hash算法,看似高大上,其實(shí)很簡(jiǎn)單,就是對(duì)輸入數(shù)據(jù)運(yùn)算了9次hash函數(shù),前一輪運(yùn)算結(jié)果作為后一輪運(yùn)算的輸入。
這9輪Hash共使用6種加密算法,分別為BLAKE, BMW, GROESTL, JH, KECCAK和SKEIN,這些都是公認(rèn)的安全Hash算法,并且早已存在現(xiàn)成的實(shí)現(xiàn)代碼。這種多輪Hash一出現(xiàn)就給人造成直觀上很安全很強(qiáng)大的感覺,追捧者無數(shù)?,F(xiàn)今價(jià)格依然堅(jiān)挺的達(dá)世幣(DASH,前身是暗黑幣,Darkcoin,)接過下一棒,率先使用11種加密算法(BLAKE, BMW, GROESTL, JH, KECCAK, SKEIN, LUFFA, CUBEHASH, SHAVITE, SIMD, ECHO),美其名曰X11,緊接著X13,X15這一系列就有人開發(fā)出來了。S系列算法實(shí)際是一種串聯(lián)思路,只要其中一種算法被破解,整個(gè)算法就被破解了,好比一根鏈條,環(huán)環(huán)相扣,只要其中一環(huán)斷裂,整個(gè)鏈條就一分為二。
【并聯(lián)算法】
有人串聯(lián),就有人并聯(lián),Heavycoin(HVC)率先做了嘗試。HVC如今在國內(nèi)名不見經(jīng)傳,當(dāng)時(shí)還是名噪一時(shí),首次實(shí)現(xiàn)鏈上游戲,作者是俄羅斯人,后來不幸英年早逝,在幣圈引起一陣惋惜。
HVC算法細(xì)節(jié):
a. 對(duì)輸入數(shù)據(jù)首先運(yùn)行一次HEFTY1(一種Hash算法)運(yùn)算,得到結(jié)果d1
b. 以d1為輸入,依次進(jìn)行SHA256、KECCAK512、GROESTL512、BLAKE512運(yùn)算,分別獲得輸出d2,d3,d4和d5
c. 分別提取d2-d5前64位,混淆后形成最終的256位Hash結(jié)果,作為區(qū)塊ID。
之所以首先進(jìn)行一輪HEFTY1 哈希,是因?yàn)镠EFTY1 運(yùn)算起來極其困難,其抵御礦機(jī)性能遠(yuǎn)超于SCRYPT。但與SCRYPT一樣,安全性沒有得到某個(gè)官方機(jī)構(gòu)論證,于是加入后面的四種安全性已經(jīng)得到公認(rèn)的算法增強(qiáng)安全。對(duì)比串聯(lián)和并聯(lián)的方法,Quark、X11,X13等雖使用了多種HASH函數(shù),但這些算法都是簡(jiǎn)單的將多種HASH函數(shù)串聯(lián)在一起,仔細(xì)思考,其實(shí)沒有提高整體的抗碰撞性,其安全性更是因木桶效應(yīng)而由其中安全最弱的算法支撐,其中任何一種Hash函數(shù)遭遇碰撞性攻擊,都會(huì)危及貨幣系統(tǒng)的安全性。
HVC從以上每種算法提取64位,經(jīng)過融合成為最后的結(jié)果,實(shí)際上是將四種算法并聯(lián)在一起,其中一種算法被破解只會(huì)危及其中64位,四中算法同時(shí)被破解才會(huì)危及貨幣系統(tǒng)的安全性。比特幣只使用了一種Hash算法,假如未來某日SHA256被證明不再安全時(shí),雖然可以更該算法,但考慮到如今“硬分叉猛于虎”的局面,屆時(shí)引發(fā)動(dòng)蕩不可避免,但如果使用并聯(lián)算法,就可以爭(zhēng)取平靜的硬分叉過渡時(shí)間。
【EKT的選擇】
EKT的中心思想是設(shè)計(jì)一個(gè)社區(qū)的機(jī)制,讓開發(fā)者可以輕易的開發(fā)一個(gè)DAPP,其他的交給EKT來處理。由于貨幣需要一個(gè)穩(wěn)定的系統(tǒng),智能合約設(shè)計(jì)的越復(fù)雜出錯(cuò)的可能性就越高,所以在早期中本聰認(rèn)為貨幣系統(tǒng)是不需要圖靈完備的語言的,比特幣之所以不支持智能合約也是覺得貨幣需要極高的穩(wěn)定性。那么,如何運(yùn)行區(qū)塊鏈里保持貨幣穩(wěn)定的同時(shí)又可以開發(fā)Dapp呢?有一種比較好的解決辦法就是把Token鏈和DApp鏈分開。 在EKT中Token鏈?zhǔn)且粋€(gè)并行多鏈的結(jié)構(gòu),多鏈多共識(shí),共享用戶基礎(chǔ)。設(shè)計(jì)并行多鏈有兩個(gè)原因:
1. 每個(gè)Token發(fā)行者或者鏈的發(fā)行者對(duì)共識(shí)的要求是不同的,對(duì)去中心化程度要求比較高的可以選擇PoW,對(duì)TPS要求比較高的可以選擇DPOS,每個(gè)鏈的Token進(jìn)行交易的時(shí)候消耗的是當(dāng)前鏈的主幣作為交易費(fèi),也提高了發(fā)行鏈的靈活性。
2. 并行多鏈可以共享用戶,不同鏈的擁有者是一個(gè)互利關(guān)系,可以很方便的進(jìn)行不同鏈的資產(chǎn)轉(zhuǎn)移,而且多鏈并行理論上整個(gè)網(wǎng)絡(luò)的TPS是沒有上限的。
在EKT中Token鏈?zhǔn)且粋€(gè)并行多鏈的結(jié)構(gòu),多鏈多共識(shí),共享用戶基礎(chǔ),這也意味著使用EKT公鏈,可以把Token鏈和Dapp鏈分離,并自由的選擇加密算法。 在項(xiàng)目初期,EKT 除了默認(rèn)提供的 DPOS 共識(shí)算法以外,還會(huì)陸續(xù)支持工作量證明(POW)以及股權(quán)證明機(jī)制(POS)。 用戶在基于 EKT 主鏈的代碼部署自己的主鏈時(shí),可以選擇使用哪種共識(shí)算法。在部署完以后再去 EKT 的客戶端中進(jìn)行注冊(cè)。共識(shí)算法一旦選定就會(huì)記入 EKT 主鏈,不可更改。至于為何EKT在一開始就越過了POW算法,直接在主鏈上選擇了DPOS共識(shí)。
由于貨幣需要一個(gè)穩(wěn)定的系統(tǒng),智能合約設(shè)計(jì)的越復(fù)雜出錯(cuò)的可能性就越高,所以在早期中本聰認(rèn)為貨幣系統(tǒng)是不需要圖靈完備的語言的,比特幣之所以不支持智能合約也是覺得貨幣需要極高的穩(wěn)定性。在上面我們了解了EKT中的Token鏈?zhǔn)且粋€(gè)并行多鏈的結(jié)構(gòu),多鏈多共識(shí),共享用戶基礎(chǔ),這也意味著使用EKT公鏈,可以把Token鏈和Dapp鏈分離,并自由的選擇共識(shí)算法和加密算法。用戶在基于 EKT 主鏈的代碼部署自己的主鏈時(shí),可以選擇使用哪種共識(shí)算法。本篇我們將繼續(xù)探討為何EKT從一開始就越過了POW算法,直接在主鏈上選擇了DPOS共識(shí)。我們繼續(xù)回顧POW機(jī)制里所采用的一些算法:
【有價(jià)值的POW挖礦?】
正當(dāng)一部分人在越來越復(fù)雜的算法探索之路上越走越遠(yuǎn)時(shí),另一部分“環(huán)保人士”也提出了尖銳的批評(píng),那就是指責(zé)POW浪費(fèi)能源。雖然彼時(shí)POS機(jī)制已經(jīng)實(shí)現(xiàn),但顯然所有礦工都不愿意輕易承認(rèn)自己的礦機(jī)/顯卡正在干一件毫無意義的蠢事。POW黨雖極力維護(hù),但也承認(rèn)耗費(fèi)能源這一事實(shí)。這一指責(zé)打開了另一條探索之路,即如果能找到一種算法,既能維護(hù)區(qū)塊鏈安全,這些Hash運(yùn)算又能在其他方面產(chǎn)生價(jià)值,那簡(jiǎn)直完美在這條探索之路上最讓人振奮人心的成果來自于Sunny King(這個(gè)人之前已經(jīng)開發(fā)了Peercoin,即著名的點(diǎn)點(diǎn)幣)發(fā)明的素?cái)?shù)幣(Primecoin)。
素?cái)?shù)幣算法的核心理念是:在做Hash運(yùn)算的同時(shí)尋找大素?cái)?shù)。素?cái)?shù)如今已被廣泛應(yīng)用于各個(gè)領(lǐng)域,但人類對(duì)他的認(rèn)識(shí)還是有限。質(zhì)數(shù)在數(shù)學(xué)界中,存在著很多的疑難問題,比如著名的哥德巴赫猜想、黎曼猜想、孿生質(zhì)數(shù)猜想、費(fèi)馬數(shù)、梅森質(zhì)數(shù)等等,這些問題的解決,可以對(duì)人類的科學(xué)技術(shù)的發(fā)展,起到非常重要的促進(jìn)作用。素?cái)?shù)在數(shù)軸上不但稀有(相對(duì)于偶數(shù)而言),而且分布不規(guī)律,在數(shù)軸上尋找素?cái)?shù)只能盲目搜索探測(cè),這正是POW的特征。質(zhì)數(shù)幣發(fā)布以后,憑借其全新的創(chuàng)意和對(duì)數(shù)學(xué)學(xué)術(shù)界帶來的貢獻(xiàn),引起電子貨幣行業(yè)極大關(guān)注。質(zhì)數(shù)幣是全世界第一個(gè)為數(shù)學(xué)問題而提出的電子貨幣,號(hào)稱挖礦運(yùn)算有實(shí)用科研貢獻(xiàn)的加密貨幣。
POW還有另一個(gè)要求是容易驗(yàn)證,這方面人類經(jīng)過幾百年探索已經(jīng)獲得一些成果。素?cái)?shù)幣使用兩種方法測(cè)試,首先進(jìn)行費(fèi)馬測(cè)試(Fermat Test),通過則再進(jìn)行歐拉-拉格朗日-立夫習(xí)茲測(cè)試(Euler-Lagrange-Lifchitz Test),依次通過測(cè)試則被視為是素?cái)?shù)。需要指出的是,這種方法并不能保證通過測(cè)試的數(shù)百分百是素?cái)?shù),不過這并不影響系統(tǒng)運(yùn)行,即便測(cè)試結(jié)果錯(cuò)誤,只要每個(gè)節(jié)點(diǎn)都認(rèn)為是素?cái)?shù)就行。
由于素?cái)?shù)在數(shù)軸上分布不均勻,且根據(jù)目前掌握的知識(shí)來看,數(shù)越大,素?cái)?shù)越稀有,尋找難度并不是線性遞增,耗時(shí)也就不可預(yù)估,但是區(qū)塊鏈要求穩(wěn)定出塊。正因?yàn)檫@點(diǎn),素?cái)?shù)幣算法沒有得到熱捧,但這種探索并非沒有意義,利用POW工作量的“幻想”并沒有停止,探索還在繼【以太坊的選擇】以太坊(Ethereum)其實(shí)在一開始就計(jì)劃使用POS方式,但由于POS設(shè)計(jì)存在一些問題,開發(fā)團(tuán)隊(duì)決定在以太坊1.0階段使用POW方式,預(yù)計(jì)在Serenity階段轉(zhuǎn)入POS(CasperFFG)。
由于比特幣的PoW算法是計(jì)算困難型,所以導(dǎo)致了ASIC專業(yè)礦機(jī)的出現(xiàn),從而導(dǎo)致了挖礦中心化。以太坊吸取了比特幣的教訓(xùn),專門設(shè)計(jì)了Ethash,它是內(nèi)存困難型算法,它的特點(diǎn)是挖礦的效率與計(jì)算關(guān)聯(lián)度不大,而與內(nèi)存的性能正相關(guān)。雖只是一個(gè)過渡算法,但開發(fā)團(tuán)隊(duì)一點(diǎn)也不含糊,采取了一種非常繁瑣的設(shè)計(jì)風(fēng)格。Ethash 是Dagger-Hashimoto改良算法,是Hashimoto算法結(jié)合Dagger算法產(chǎn)成的一個(gè)新變種。
該算法的基本流程如下:
1)通過掃描區(qū)塊頭得到一個(gè)種子seed;
2)通過該種子產(chǎn)生一個(gè)16M的偽隨機(jī)緩存;
3)基于緩存生成大約1GB的數(shù)據(jù)集(內(nèi)存),稱為DAG。DAG中的每一個(gè)元素由緩存中的某幾個(gè)元素計(jì)算產(chǎn)生,也就是說,只要有緩存,就可以快速地計(jì)算出DAG中指定位置的元素;
4)“礦工”從DAG中隨機(jī)選擇元素并對(duì)其進(jìn)行Hash運(yùn)算,DAG是一個(gè)完整的搜索空間,挖礦的過程就是從DAG中隨機(jī)選擇元素(類似比特幣挖礦中試探合適nonce的過程)進(jìn)行Hash運(yùn)算。
5)驗(yàn)證者只需要利用緩存就可以驗(yàn)證Hash運(yùn)算的正確性。
注:緩存和DAG中每增加30000個(gè)區(qū)塊(即5.2天)更新一次,所以Ethash的主要時(shí)間消耗在從DAG中讀取數(shù)據(jù),而DAG一般存儲(chǔ)在內(nèi)存,所以主要瓶頸在內(nèi)存性能以及它的帶寬。以太坊初期100%采用PoW挖礦,但是挖礦的難度除了因?yàn)樗懔υ鲩L(zhǎng)而增加之外,還有一個(gè)額外的難度因子呈指數(shù)級(jí)增加,這就是難度炸彈(Difficulty Bomb)。
由于PoS的運(yùn)用將會(huì)降低挖礦的門檻,因?yàn)榈V工不需要再去購買價(jià)格高昂的硬件礦機(jī),只需要購買一定數(shù)量的ETH,將其作為保證金通過權(quán)益證明的方式驗(yàn)證交易有效性,即可拿到一定的獎(jiǎng)勵(lì)。因此,對(duì)礦工來說他們花高價(jià)購買的礦機(jī)將無用武之地,這勢(shì)必會(huì)引起礦工的不滿。為了防止PoW轉(zhuǎn)PoS的過程中礦工聯(lián)合起來抵制,從而分叉出兩條以太坊區(qū)塊鏈,難度炸彈被引入。難度炸彈指的是計(jì)算難度時(shí)除了根據(jù)出塊時(shí)間和上一個(gè)區(qū)塊難度進(jìn)行調(diào)整外,加上了一個(gè)每十萬個(gè)區(qū)塊呈指數(shù)型增長(zhǎng)的難度因子。
2017年10月,由于以太坊基金會(huì)還在為過渡到其混合PoS系統(tǒng)Casper奠定基礎(chǔ),以太坊將拆除“難度炸彈”的計(jì)劃推遲了一年。但是隨著以太坊轉(zhuǎn)POS的日程漸進(jìn),一旦以太坊轉(zhuǎn)移到PoS,ETC的網(wǎng)絡(luò)(已于5月30日,在5900000區(qū)塊高度硬分叉移除了“難度炸彈”)可能會(huì)有希望以當(dāng)前形式繼承大部分專供ETH的挖礦哈希算力。當(dāng)大量算力涌入ETC,而其區(qū)塊產(chǎn)出不變時(shí),有可能會(huì)因?yàn)橥诘V成本的上升而引起幣價(jià)躍升。
【零知識(shí)證明】
加密貨幣世界里,實(shí)現(xiàn)“全匿名”的,風(fēng)頭最勁的莫過于Zcash,該幣種最大的特點(diǎn)是使用零知識(shí)證明實(shí)現(xiàn)隱私交易。Zcash對(duì)于算法的選擇非常慎重,在先后考量了SHA256D,SCRYPT,CUCKOO HASH以及LYRA2等算法后,最終選擇Equihash。Equihash算法由Alex Biryukov 和 Dmitry Khovratovich聯(lián)合發(fā)明,其理論依據(jù)是一個(gè)著名的計(jì)算法科學(xué)及密碼學(xué)問題——廣義生日悖論問題。零知識(shí)證明能夠成立需要具備三個(gè)要素,即完整性、可靠性和零知識(shí)。
舉個(gè)例子來說就是,假設(shè)有一個(gè)環(huán)形走廊,出口和入口相鄰但不互通(在目測(cè)距離之內(nèi)),在這個(gè)環(huán)形走廊中間的某處有一道鎖起來的門,只有擁有鑰匙的人才可以通過;這時(shí)A要向B證明自己擁有打開這道門的鑰匙,用零知識(shí)量證明來解決就是,B看著A走進(jìn)入口并在出口等待,如果A從入口進(jìn)入通過走廊并從出口走出,則可以證明其擁有打開中間那扇門的鑰匙,而在這個(gè)過程中,他完全不用向B提供鑰匙的具體信息。所以零知識(shí)證明實(shí)際上是一種概率證明而非確定性證明。
Zcash現(xiàn)在采用的Equihash是一個(gè)內(nèi)存(ARM)依賴型算法,機(jī)器算力大小主要取決于擁有多少內(nèi)存,根據(jù)兩位發(fā)明者的論文描述,該算法執(zhí)行至少需要700M內(nèi)存,1.8 GHz CPU計(jì)算30秒,經(jīng)Zcash項(xiàng)目?jī)?yōu)化后,目前每個(gè)挖礦線程需要1G內(nèi)存,因此Zcash官方認(rèn)為該算法在短時(shí)間內(nèi)很難出現(xiàn)礦機(jī)(ASIC)。此外,Zcash官方還相信該算法比較公平,他們認(rèn)為很難有人或者機(jī)構(gòu)能夠?qū)λ惴ㄍ低颠M(jìn)行優(yōu)化,因?yàn)閺V義生日悖論是一個(gè)已經(jīng)被廣泛研究的問題。此外,Equihash算法非常容易驗(yàn)證,這對(duì)于未來在受限設(shè)備上實(shí)現(xiàn)Zcash輕客戶端非常重要。
【EKT的選擇】
那么什么是DPoS呢? 首先我們知道在POS陣營里,你獲得幣的量是由你之前獲得幣的量來確定的。DPoS機(jī)制它的原理是讓每一個(gè)持有幣的人進(jìn)行投票,由此產(chǎn)生K位代表 , 我們可以將其理解為K個(gè)超級(jí)節(jié)點(diǎn)或者礦池,而這K個(gè)超級(jí)節(jié)點(diǎn)彼此的權(quán)利是完全相等的。從某種角度來看,DPOS有點(diǎn)像是議會(huì)制度或人民代表大會(huì)制度。如果代表不能履行他們的職責(zé)(當(dāng)輪到他們時(shí),沒能生成區(qū)塊),他們會(huì)被除名,網(wǎng)絡(luò)會(huì)選出新的超級(jí)節(jié)點(diǎn)來取代他們。
這種機(jī)制可以說是目前比較好的兼容了公平于效率的辦法。EKT的中心思想是設(shè)計(jì)一個(gè)社區(qū)的機(jī)制,讓開發(fā)者可以輕易的開發(fā)一個(gè)DAPP,其他的交給EKT來處理。而EKT的主鏈就選取了DPoS的機(jī)制來確保其長(zhǎng)期的穩(wěn)定性和高性能。由于貨幣需要一個(gè)穩(wěn)定的系統(tǒng),智能合約設(shè)計(jì)的越復(fù)雜出錯(cuò)的可能性就越高,所以在早期中本聰認(rèn)為貨幣系統(tǒng)是不需要圖靈完備的語言的,比特幣之所以不支持智能合約也是覺得貨幣需要極高的穩(wěn)定性。
目前主流的區(qū)塊鏈性能瓶頸問題突出, 區(qū)塊鏈處理能力受制于單個(gè)節(jié)點(diǎn)的處理能力,這限制了區(qū)塊鏈的處理速度,也浪費(fèi)了整個(gè)網(wǎng)絡(luò)大量的處理能力,隨著更多的節(jié)點(diǎn)加入到網(wǎng)絡(luò), 網(wǎng)絡(luò)流量增加會(huì)使系統(tǒng)性能顯著降低。那么,如何運(yùn)行區(qū)塊鏈里保持貨幣穩(wěn)定的同時(shí)又可以開發(fā)Dapp呢?有一種比較好的解決辦法就是把Token鏈和DApp鏈分開。那么如何能建立一個(gè)正反饋的,良性運(yùn)行的社區(qū)呢?最關(guān)鍵的特性指標(biāo)其實(shí)在于TPS和延遲。
平日大家吐槽最多的是TPS,其實(shí)在比特幣或者以太坊上,即使TPS上去了,延遲也下不來。因?yàn)镻OW挖礦的原因,全網(wǎng)同步區(qū)塊總是需要一段時(shí)間。在EKT中,允許一些執(zhí)行順序不同對(duì)全局一致性沒有影響的事件可以在區(qū)塊打包前執(zhí)行(其實(shí)應(yīng)用中大部分都是這樣的事件),然后對(duì)時(shí)序性有要求的事件區(qū)塊打包后執(zhí)行,這樣可以實(shí)現(xiàn)大部分事件的秒級(jí)確認(rèn)和執(zhí)行。其實(shí)就是把一些事件先異步執(zhí)行,然后區(qū)塊打包的時(shí)候進(jìn)行一致性校驗(yàn)。這樣就能較好的降低延遲。
在項(xiàng)目初期,EKT 除了默認(rèn)提供的 DPOS 共識(shí)算法以外,還會(huì)陸續(xù)支持工作量證明(POW)以及股權(quán)證明機(jī)制(POS)。 用戶在基于 EKT 主鏈的代碼部署自己的主鏈時(shí),可以選擇使用哪種共識(shí)算法(會(huì)陸續(xù)支持包括前文提到的任意一種)。在部署完以后再去 EKT 的客戶端中進(jìn)行注冊(cè)。以上就是我對(duì)區(qū)塊鏈加密機(jī)制的一些思考,和一些在設(shè)計(jì)EKT的多鏈多共識(shí),Token鏈和DAPP鏈分離的解決思路。
評(píng)論
查看更多