共識(shí)算法是所有區(qū)塊鏈/DAG的基礎(chǔ),它們構(gòu)成了區(qū)塊鏈/DAG平臺(tái)中的最重要部分。如果沒(méi)有共識(shí)算法,我們得到只是一個(gè)不可寫的啞(dummy)數(shù)據(jù)庫(kù)。
我將在本文中盡可能列出所有主要的共識(shí)算法,評(píng)估各自的優(yōu)劣之處。如果讀者發(fā)現(xiàn)有所遺漏,或是存在錯(cuò)誤,希望能通過(guò)評(píng)論指出。此外,我個(gè)人也在逐步深入研究共識(shí)算法及其對(duì)經(jīng)濟(jì)的影響,為此本文也將做定期的更新。
下面列出共識(shí)算法。
1. 工作量證明(PoW,Proof of Work)
優(yōu)點(diǎn): 自2009年以來(lái)得到了廣泛測(cè)試,目前依然得到廣泛的使用。
不足:速度慢。耗能巨大,對(duì)環(huán)境不好。易受“規(guī)模經(jīng)濟(jì)”(economies of scale)的影響。
使用者:Bitcoin、Ethereum、Litecoin、Dogecoin等。
類型:有競(jìng)爭(zhēng)共識(shí)(Competitive consensus)。
解釋:PoW是是首個(gè)共識(shí)算法。它是由中本聰在他的論文中提出的,用于建立分布式無(wú)信任共識(shí)并識(shí)別“雙重支付”(double spend)問(wèn)題。PoW并非一個(gè)新理念,但是中本聰將Pow與加密簽名、Merkle鏈和P2P網(wǎng)絡(luò)等已有理念結(jié)合,形成一種可用的分布式共識(shí)系統(tǒng)。加密貨幣是這樣系統(tǒng)的首個(gè)基礎(chǔ)和應(yīng)用,因而獨(dú)具創(chuàng)新性。
在PoW的工作方式中,區(qū)塊鏈參與者(稱為“礦工”)要在區(qū)塊鏈中添加一塊交易,必須解決某種“復(fù)雜但是無(wú)用”的計(jì)算問(wèn)題。
本質(zhì)上,這種做法可確保礦工花費(fèi)了一些金錢或資源(礦機(jī))完成工作,這表示了它們將不會(huì)損害區(qū)塊鏈系統(tǒng),因?yàn)閷?duì)系統(tǒng)的損害也將會(huì)導(dǎo)致投資的損失,進(jìn)而損害他們自身。
為保證運(yùn)行區(qū)塊時(shí)間不變,問(wèn)題的復(fù)雜性會(huì)發(fā)生變化。有時(shí),會(huì)存在多名礦工同時(shí)解決了問(wèn)題。在這種情況下,每位礦工從中選取一個(gè)區(qū)塊鏈,并以選取最長(zhǎng)鏈者為獲勝者。因此,如果假定大多數(shù)礦工工作在同一個(gè)鏈上,那么成長(zhǎng)最快的鏈將成為最長(zhǎng)和最值得信任的鏈。這樣,只要由礦工提交的工作有超過(guò)一半是值得信任的,那么Bitcoin就是安全的。
2. 權(quán)益證明(PoS,Proof of Stake)
優(yōu)點(diǎn):節(jié)能、攻擊者代價(jià)更大、不易受“規(guī)模經(jīng)濟(jì)”的影響。
不足:“無(wú)利害關(guān)系“(Nothing at stake)”攻擊問(wèn)題。
使用者:Ethereum(即將推出)、Peercoin、Nxt。
類型:有競(jìng)爭(zhēng)共識(shí)。
解釋:PoS是作為Pow的替代技術(shù)提出的,意在解決PoW的一些內(nèi)在問(wèn)題。PoS沒(méi)有使用挖礦方法,而是用戶必須具有系統(tǒng)中的一些權(quán)益(幣)。因此,如果用戶擁有10%的權(quán)益(代幣),那么該用戶挖掘下一個(gè)區(qū)塊的可能性就是10%。
挖礦為解決計(jì)算上的挑戰(zhàn),需要運(yùn)行各種加密計(jì)算,這需要耗費(fèi)大量的算力。算力將轉(zhuǎn)變?yōu)镻oW所需的大量電能。據(jù)估計(jì)在2015年時(shí),一個(gè)Bitcoin交易所需的電力,可達(dá)1.57個(gè)美國(guó)家庭一日所需的電力。PoS的提出是為了節(jié)約電力耗費(fèi)。
在PoS中,一個(gè)美元就是一個(gè)美元。例如,假定有一萬(wàn)名每位每分鐘花費(fèi)1美元(一年8760萬(wàn)美元)的礦工,要比一位具有每分鐘花費(fèi)一萬(wàn)美元挖掘礦池能力的礦工擁有更少的哈希能力(Hashing Power)。但是在PoS中不支持一次用光所有算力,一美元就是一美元。因此PoS不易受“規(guī)模經(jīng)濟(jì)”的影響。
此外,攻擊PoS系統(tǒng)也要比攻擊PoW系統(tǒng)的代價(jià)更大。引用Vlad Zamfir的說(shuō)法:
在PoS中,重復(fù)51%攻擊的代價(jià),可類比為每額外運(yùn)行一輪,都會(huì)“燒毀你的ASIC農(nóng)場(chǎng)”。
這意味著,每次攻擊PoS系統(tǒng),攻擊者都會(huì)失去自己的權(quán)益。而在PoW中,攻擊者不會(huì)丟失挖礦設(shè)備,或是代幣。對(duì)PoW系統(tǒng)的攻擊只會(huì)使攻擊本身難以執(zhí)行。
但是PoS會(huì)在“無(wú)厲害關(guān)系”上出問(wèn)題。這種對(duì)多個(gè)區(qū)塊歷史(forks)投票的方式不會(huì)讓區(qū)塊生成器有任何損失,進(jìn)而阻礙了達(dá)成共識(shí)。
在 PoS 中,你可以在區(qū)塊鏈的雙方押注資產(chǎn)(“無(wú)厲害關(guān)系”問(wèn)題)。而在 PoW 中,你不能從鏈的兩個(gè)方向同時(shí)挖礦,因?yàn)檫@難以實(shí)現(xiàn)。
不同于 PoW 系統(tǒng)(用戶為擴(kuò)展鏈必須做大量的計(jì)算),PoS 在多個(gè)鏈上工作的代價(jià)很小。有一些項(xiàng)目試圖通過(guò)多種方式解決這個(gè)問(wèn)題(參見(jiàn)“擴(kuò)展閱讀”)。例如,一個(gè)解決方案就是上文所介紹的,對(duì)不好的驗(yàn)證者做懲罰。
3. 延遲工作量證明(dPoW,Delayed Proof-of-Work)、
優(yōu)點(diǎn):
節(jié)能、安全性增加、可以通過(guò)非直接提供 Bitcoin(或是其它任何安全鏈),添加價(jià)值到其它區(qū)塊鏈,無(wú)需付出 Bitcoin(或是其它任何安全鏈)交易的代價(jià)。
不足:
只有使用 PoW 或 PoS 的區(qū)塊鏈,才能采用這種共識(shí)算法。
在“公證員激活”(Notaries Active)模式下,必須校準(zhǔn)不同節(jié)點(diǎn)(公證員或正常節(jié)點(diǎn))的哈希率,否則哈希率間的差異會(huì)爆炸(下文將給出詳細(xì)解釋)。
采用者:Komodo
類型:協(xié)同型共識(shí)(Collaborative consensus)
解釋:dPoW 是一種混合共識(shí)方法,允許一個(gè)區(qū)塊鏈利用第二個(gè)區(qū)塊鏈的哈希算力(Hashing Power)所提供的安全。該機(jī)制是通過(guò)一組公證員節(jié)點(diǎn)(Notary Node)實(shí)現(xiàn)的。公證員節(jié)點(diǎn)實(shí)現(xiàn)將第一個(gè)區(qū)塊鏈的數(shù)據(jù)添加到第二個(gè)區(qū)塊鏈中。進(jìn)而,第二個(gè)區(qū)塊鏈請(qǐng)求在兩個(gè)區(qū)塊鏈間達(dá)成妥協(xié),弱化第一個(gè)區(qū)塊鏈的安全。Komodo是首個(gè)使用該共識(shí)方法的區(qū)塊鏈,它就是附加于 Bitcoin 區(qū)塊鏈之上的。
使用 dPoW 的區(qū)塊鏈也可以使用 PoW 或 PoS 共識(shí)方法工作,并可以附加在任何采用 PoW 的區(qū)塊鏈上。但對(duì)于由 dPoW 提供安全的區(qū)塊鏈,當(dāng)前 Bitcoin 給出了最高安全層級(jí)的哈希率。下圖展示了主區(qū)塊鏈的單個(gè)記錄以及其所附著的 PoW 區(qū)塊鏈。
dPoW 系統(tǒng)中有兩種類型的節(jié)點(diǎn):公證人節(jié)點(diǎn)和正常節(jié)點(diǎn)。64 個(gè)公證人節(jié)點(diǎn)是由 dPoW 區(qū)塊鏈的權(quán)益持有者(stakeholder)選舉產(chǎn)生的,它們可從 dPoW 區(qū)塊鏈向所附加的 PoW 區(qū)塊鏈添加經(jīng)公證確認(rèn)的塊。一旦添加了一個(gè)塊,該塊的哈希值將被添加到由 33 個(gè)公證人節(jié)點(diǎn)簽署的 Bitcoin 交易中,并創(chuàng)建一個(gè)哈希到 Bitcoin 區(qū)塊鏈的 dPow 塊記錄。該記錄已被網(wǎng)絡(luò)中的大多數(shù)公證人節(jié)點(diǎn)公證。
為避免公證人節(jié)點(diǎn)間在挖礦上產(chǎn)生戰(zhàn)爭(zhēng),進(jìn)而降低網(wǎng)絡(luò)的效率,Komodo 設(shè)計(jì)了一種采用輪詢機(jī)制的挖礦方法。該方法具有兩種運(yùn)行模式。在“無(wú)公證人”(No Notary)模式下,支持所有網(wǎng)絡(luò)節(jié)點(diǎn)參與挖礦,這類似于傳統(tǒng) PoW 共識(shí)機(jī)制。而在“公證人激活”(Notaries Active)模式下,網(wǎng)絡(luò)公證人使用一種顯著降低的網(wǎng)絡(luò)難度率挖礦。“公證人激活”模式下,允許每位公證人使用其當(dāng)前的難度挖掘一個(gè)區(qū)塊,而其它公證人節(jié)點(diǎn)必須采用 10 倍難度挖礦,所有正常節(jié)點(diǎn)使用公證人節(jié)點(diǎn)難度的 100 倍挖礦。
但這會(huì)導(dǎo)致一些問(wèn)題。我在與 Komodo 創(chuàng)始人的一次談話中提及,這將導(dǎo)致公證人礦工和正常礦工間的哈希率存在很高的差異:
圖 本文作者與 Komodo 創(chuàng)始人間就不一致性問(wèn)題進(jìn)行交流的截圖
dPoW 系統(tǒng)在設(shè)計(jì)上支持區(qū)塊鏈在沒(méi)有公證人節(jié)點(diǎn)的情況下繼續(xù)運(yùn)行。在這種情況下,dPoW 區(qū)塊鏈可以基于初始的共識(shí)方法繼續(xù)運(yùn)行,但將不再具有所附著區(qū)塊鏈增添的安全。
所有使用 dPoW 的區(qū)塊鏈可增加安全,同時(shí)降低能耗。例如,Komodo 使用 Equihash 哈希算法防止使用 ASIC 挖礦。其公證人節(jié)點(diǎn)依賴于一種輪詢挖礦方法,獎(jiǎng)勵(lì)機(jī)制考慮了降低節(jié)點(diǎn)間競(jìng)爭(zhēng)的可能性。這些節(jié)點(diǎn)將會(huì)引發(fā)過(guò)度耗能或算力。
此外通過(guò)非直接提供 Bitcoin 安全,Komodo 這類 dPoW 區(qū)塊鏈可以向其它區(qū)塊鏈添加價(jià)值,無(wú)需付出任何 Bitcoin 交易的代價(jià)。Komodo 此后附著到 Bitcoin,而第三個(gè)使用 dPoW 的區(qū)塊鏈可以將自身附著到 Komodo。使用這種方式,dPoW 區(qū)塊鏈不必直接附著到 Bitcoin 區(qū)塊鏈,就從 Bitcoin 的高哈希率中受益。
最后一點(diǎn),公證人節(jié)點(diǎn)和正常節(jié)點(diǎn)分離的功能,確保了初始共識(shí)機(jī)制在公證人節(jié)點(diǎn)失敗時(shí)繼續(xù)運(yùn)行。這種相互獨(dú)立性建立了一種獎(jiǎng)勵(lì)機(jī)制,使得其它網(wǎng)絡(luò)無(wú)需依賴于 Bitcoin 網(wǎng)絡(luò)的直接功能,即可支持 Bitcoin 網(wǎng)絡(luò)的繼續(xù)維護(hù)。
4. 授權(quán) PoS(DPoS,Delegated Proof-of-Stake)
優(yōu)點(diǎn):
節(jié)能、快速、高流量博客網(wǎng)站Steemit就使用了它。EOS 的塊時(shí)間是 0.5 秒。
不足:
略為中心化、擁有高權(quán)益的參與者可投票使自己成為一名驗(yàn)證者。這是近期已在 EOS 中出現(xiàn)的問(wèn)題。
采用者:BitShares、Steemit、EOS、Lisk、Ark。
類型:協(xié)同型共識(shí)
解釋:在 DPoS 系統(tǒng)中,權(quán)益持有者可以選舉領(lǐng)導(dǎo)者(或稱為見(jiàn)證人,Witness)。經(jīng)權(quán)益持有者授權(quán),這些領(lǐng)導(dǎo)者可進(jìn)行投票。該機(jī)制使得 DPoS 要快于正常的 PoS。
例如,EOS 中選舉出 21 位見(jiàn)證人,并且有一堆節(jié)點(diǎn)(潛在的見(jiàn)證人)作為候選者。一旦見(jiàn)證人節(jié)點(diǎn)死亡或是做出了惡意行為,新節(jié)點(diǎn)就會(huì)立刻替代見(jiàn)證人節(jié)點(diǎn)。見(jiàn)證人會(huì)因?yàn)樯蓞^(qū)塊而獲得一筆支付費(fèi)用。該費(fèi)用是由權(quán)益持有者設(shè)立的 。
通常,所有節(jié)點(diǎn)采用輪詢方式,一次生成一個(gè)區(qū)塊。該機(jī)制防止一個(gè)節(jié)點(diǎn)發(fā)布連續(xù)的塊,進(jìn)而執(zhí)行“雙重支付”攻擊。如果一個(gè)見(jiàn)證人在分配給他的時(shí)間槽中未生成區(qū)塊,那么該時(shí)間槽就被跳過(guò),并由下一位見(jiàn)證人生成下一個(gè)區(qū)塊。如果見(jiàn)證人持續(xù)丟失他的區(qū)塊,或是發(fā)布了錯(cuò)誤的交易,那么權(quán)益持有者將投票決定其退出,用更好的見(jiàn)證人替換他。
在 DPoS 中,礦工可以合作生成塊,而不是像在 PoW 和 PoS 中那樣競(jìng)爭(zhēng)生成。通過(guò)區(qū)塊生成的部分中心化,DPoS 的運(yùn)行可以比其它共識(shí)算法呈數(shù)量級(jí)快。
5. 權(quán)威證明(PoA,Proof-of-Authority)
優(yōu)點(diǎn):節(jié)能、快速。
不足:略為中心化。雖然可用于公有區(qū)塊鏈,但是通常用于私有區(qū)塊鏈和許可區(qū)塊鏈。
使用者:POA.Network、Ethereum Kovan testnet、VeChain。
類型:協(xié)同型共識(shí)。
解釋:基于 PoA 的網(wǎng)絡(luò)、事務(wù)和區(qū)塊,是由一些經(jīng)認(rèn)可的賬戶認(rèn)證的,這些被認(rèn)可的賬戶稱為“驗(yàn)證者”(Validator)。驗(yàn)證者運(yùn)行的軟件,支持驗(yàn)證者將交易(transaction)置于區(qū)塊中。該過(guò)程是自動(dòng)的,無(wú)需驗(yàn)證者持續(xù)監(jiān)控計(jì)算機(jī),但需要維護(hù)計(jì)算機(jī)(權(quán)威節(jié)點(diǎn))不妥協(xié)(uncompromised)。
驗(yàn)證者必須滿足以下三個(gè)條件:
1. 其身份必須在鏈上得到正式驗(yàn)證,信息可在公有可用域中交叉驗(yàn)證。
2. 其資格必須難以獲得,這樣所得到的驗(yàn)證塊的權(quán)利才彌足珍貴(例如,潛在的驗(yàn)證者需要獲得公證書)。
3. 建立權(quán)威的檢查和程序必須完全統(tǒng)一。
使用 PoA,每個(gè)個(gè)體都具有變成驗(yàn)證者的權(quán)利,因此存在一旦獲取就保持驗(yàn)證者位置的動(dòng)機(jī)。通過(guò)對(duì)身份附加一個(gè)聲譽(yù),可以鼓勵(lì)驗(yàn)證者去維護(hù)交易的過(guò)程。因?yàn)轵?yàn)證者并不希望讓自己獲得負(fù)面聲譽(yù),這會(huì)使其失去來(lái)之不易的驗(yàn)證者地位。
6. 權(quán)重證明(PoWeight,Proof-of-Weight)
優(yōu)點(diǎn):節(jié)能、高度可定制和可擴(kuò)展
不足:可能難以實(shí)現(xiàn)激勵(lì)、
采用者:Algorand。
類型:有競(jìng)爭(zhēng)共識(shí)。
解釋:權(quán)重證明(PoWeight)是一類很寬泛的共識(shí)算法,它基于Algorand共識(shí)模型。其基本理念是在 PoS 中,用戶所擁有的網(wǎng)絡(luò)中令牌的百分比,表示了該用戶“發(fā)現(xiàn)”下一個(gè)區(qū)塊的概率。PoWeight 系統(tǒng)中還使用了其它一些相對(duì)加權(quán)值,實(shí)現(xiàn)包括聲望證明(PoR,Proof of Reputation)和空間證明(Proof of Space)。
7. 聲譽(yù)證明(PoR,Proof of Reputation)
優(yōu)點(diǎn):非常適用于私有區(qū)塊鏈和許可區(qū)塊鏈。
不足:只能用于私有區(qū)塊鏈和許可區(qū)塊鏈。
采用者:GoChain。
類型:協(xié)同型共識(shí)。
解釋:PoR 類似于 PoA。GoChain 文檔中給出了如下描述:
PoR 共識(shí)模型依賴參與者在保持網(wǎng)絡(luò)安全中的聲譽(yù)。參與者(區(qū)塊簽名者)必須具有足夠重要的聲譽(yù)。一旦他們嘗試欺騙系統(tǒng),那么他們將要面對(duì)嚴(yán)重的財(cái)政上的和自己名聲上的后果。這是一個(gè)相對(duì)的概念,如果他們被抓到試圖欺騙,那么幾乎所有的業(yè)務(wù)將會(huì)受到嚴(yán)重的影響。規(guī)模越大的企業(yè),通常將會(huì)失去更多。這樣,相比使用更少的企業(yè)(即更小規(guī)模的商業(yè)),規(guī)模更大的企業(yè)更易于被選定。
一旦一個(gè)企業(yè)證明了自己的聲譽(yù),并通過(guò)了驗(yàn)證,那么他們必須經(jīng)投票參與到權(quán)威節(jié)點(diǎn)網(wǎng)絡(luò)中。這時(shí),PoR 的操作與 PoA 網(wǎng)絡(luò)一樣,即只有權(quán)威節(jié)點(diǎn)可以簽名并驗(yàn)證區(qū)塊。
8. 所用時(shí)間證明(PoET,Proof of Elapsed Time)
優(yōu)點(diǎn):
參與代價(jià)低。更多人可輕易加入,進(jìn)而達(dá)到去中心化。
對(duì)于所有參與者而言,更易于驗(yàn)證領(lǐng)導(dǎo)者是通過(guò)合法選舉產(chǎn)生的。
控制領(lǐng)導(dǎo)者選舉過(guò)程的代價(jià),是與從中獲得的價(jià)值成正比的。
不足:
盡管 PoET 的代價(jià)低,但是必須要使用特定的硬件。因此不會(huì)被大規(guī)模采納。
不適用于公有區(qū)塊鏈。
采用者:HyperLedger Sawtooth
類型:有競(jìng)爭(zhēng)共識(shí)
解釋:PoET 共識(shí)機(jī)制算法通常用于許可區(qū)塊鏈網(wǎng)絡(luò),它可決定網(wǎng)絡(luò)中獲得區(qū)塊者的挖礦權(quán)利。許可區(qū)塊鏈網(wǎng)絡(luò)需要任何預(yù)期參與者在加入前驗(yàn)證身份。根據(jù)公平彩票系統(tǒng)的原則,每個(gè)節(jié)點(diǎn)具有同等的可能成為勝出者。PoET 機(jī)制賦予大量可能的網(wǎng)絡(luò)參與者以平等勝出的機(jī)會(huì)。
PoET 的工作機(jī)制如下:網(wǎng)絡(luò)中的每位參與節(jié)點(diǎn)都必須等待一個(gè)隨機(jī)選取的時(shí)期,首個(gè)完成設(shè)定等待時(shí)間的節(jié)點(diǎn)將獲得一個(gè)新區(qū)塊。區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)會(huì)生成一個(gè)隨機(jī)的等待時(shí)間,并休眠一個(gè)設(shè)定的時(shí)間。最先醒來(lái)的節(jié)點(diǎn),即具有最短等待時(shí)間的節(jié)點(diǎn),喚醒并向區(qū)塊鏈提交一個(gè)新區(qū)塊,然后廣播必要的信息到整個(gè)對(duì)等網(wǎng)絡(luò)中。同一過(guò)程將會(huì)重復(fù),以發(fā)現(xiàn)下一個(gè)區(qū)塊。
在 PoET 網(wǎng)絡(luò)共識(shí)機(jī)制中,需要確保兩個(gè)重要因素。第一,參與節(jié)點(diǎn)在本質(zhì)上會(huì)自然地選取一個(gè)隨機(jī)的時(shí)間,而非某一個(gè)參與者為勝出而刻意選取了較短的時(shí)間。第二,勝出者的確完成了等待時(shí)間。
PoET 理念是由著名的芯片制造巨頭 Intel 于 2016 年早期提出的。Intel 為解決“隨機(jī)領(lǐng)導(dǎo)者選舉”的計(jì)算問(wèn)題,實(shí)現(xiàn)了一個(gè)可用的高科技工具。
這種內(nèi)在機(jī)制允許應(yīng)用在受保護(hù)的環(huán)境中執(zhí)行受信任的代碼,它確保了上面提出的兩個(gè)要求得到滿足,即隨機(jī)選擇所有參與節(jié)點(diǎn)的等待時(shí)間,以及勝出參與者真正完成了等待時(shí)間。
這種在安全環(huán)境中運(yùn)行可信代碼的機(jī)制也同時(shí)考慮到了其它一些網(wǎng)絡(luò)的需求。它確保了受信代碼的確運(yùn)行在安全環(huán)境中,并不可被其它外部參與者更改。它也確保了結(jié)果可被外部參與者和實(shí)體驗(yàn)證,進(jìn)而提高了網(wǎng)絡(luò)共識(shí)的透明度。
PoET 通過(guò)控制代價(jià)實(shí)現(xiàn)了共識(shí)過(guò)程,該代價(jià)依然是與從過(guò)程中獲得的價(jià)值成正比。這是保證加密貨幣經(jīng)濟(jì)持續(xù)繁榮的一個(gè)關(guān)鍵需求。
9. 容量證明(PoC,Proof of Capacity),也稱為空間證明(PoSpace,Proof of Space)
優(yōu)點(diǎn):
它類似于 PoW,只是使用空間替代了計(jì)算。因此更加環(huán)境友好。
可用于惡意軟件檢測(cè)。通過(guò)確定處理器的 L1 緩存是否為空(例如,具有足夠空間在沒(méi)有緩存未命中的情況下計(jì)算 PoSpace 過(guò)程),或是包含一個(gè)拒絕被逐出(evicted)的例程。
可用于反垃圾郵件措施,以及防范拒絕服務(wù)(DoS)攻擊。
不足:激勵(lì)機(jī)制可能存在問(wèn)題。
使用者: Burstcoin、Chia、SpaceMint。
類型:協(xié)同型共識(shí)。
解釋:PoSpace,也稱為 PoC,通過(guò)分配一定數(shù)量的內(nèi)存或磁盤空間用于解決服務(wù)提供者所提供挑戰(zhàn)的方式,顯示了某個(gè)人對(duì)某個(gè)服務(wù)(例如發(fā)送郵件)具有合法的興趣。該理念是由 Dziembowski 等在 2015 年形式化定義的。雖然 Ateniese 等人的論文名稱也是“Proof-of-space”,但它事實(shí)上一種采用 MHF(Memory Hard Function,一種計(jì)算代價(jià)取決內(nèi)存的哈希算法)的 PoW 協(xié)議。
PoSpace 非常類似于 PoW,只是使用存儲(chǔ)替代了 Pow 中的計(jì)算。PoSpace 與 MHF 和可回收性證明(PoR,Proof of Retrievability)有關(guān),但也在很大程度上存在著差異。
PoSpace 是由證明者 (Prover) 發(fā)送給驗(yàn)證者 (Verifier) 的一小塊數(shù)據(jù),該數(shù)據(jù)確認(rèn)了證明者已經(jīng)保留了一定量的空間。出于實(shí)用性上的考慮,驗(yàn)證過(guò)程需要盡量高效,即消耗盡可能少的空間和時(shí)間。出于公平性上的考慮,如果驗(yàn)證者沒(méi)有保留所聲明數(shù)量的空間,那么它應(yīng)該難以通過(guò)驗(yàn)證。PoSpace 的一種實(shí)現(xiàn)方式是通過(guò)使用一個(gè)難以實(shí)現(xiàn) Pebbling 的圖。驗(yàn)證者請(qǐng)求證明者構(gòu)建對(duì)一個(gè)“非 Pebbling 圖”標(biāo)記。證明者提交標(biāo)記,進(jìn)而驗(yàn)證者請(qǐng)求證明者在提交中開(kāi)放多個(gè)隨機(jī)位置。
由于存儲(chǔ)的通用本質(zhì),以及存儲(chǔ)所需的更低耗能,PoSpace 被認(rèn)為是一種更公平、更綠色的替換方法。
10. 歷史證明(PoHistory,Proof of History)
采用者:Solana
解釋:其基本理念是不相信交易中的時(shí)間戳,而是證明交易在某個(gè)事件之前或之后的某個(gè)時(shí)刻發(fā)生。
如果我們對(duì)某期《紐約時(shí)報(bào)》的封面拍了張照片,那么我們就創(chuàng)建了一個(gè)證明,即我們的拍照時(shí)間是在該報(bào)紙發(fā)行之后,或許也可能是我們有某種途徑影響了紐約時(shí)報(bào)的正常發(fā)行。我們可以使用 PoHistory 創(chuàng)建一個(gè)歷史記錄,證明一個(gè)事件是發(fā)生在特定時(shí)間之后的。
PoHistory 是一種高頻可驗(yàn)證延遲函數(shù)(VDF,Verifiable Delay Function)。VDF 求值需要完成特定數(shù)量的順序步驟,然后生成一個(gè)唯一的輸出。該輸出可被高效地和公開(kāi)地驗(yàn)證。
VDF 的一個(gè)特定實(shí)現(xiàn)使用了持續(xù)運(yùn)行于其上的順序抗預(yù)映射哈希(Pre-image Resistant Hash),其中前一次循環(huán)生成的輸出將用于下一次循環(huán)的輸入。計(jì)數(shù)和當(dāng)前輸出形成周期性記錄。
如果使用了 SHA256 哈希函數(shù),那么不使用 2128核的暴力攻擊,該過(guò)程是不可能并行化的。
因此我們可以確認(rèn),每個(gè)計(jì)數(shù)器在生成過(guò)程中都的確經(jīng)歷了一定的時(shí)間。進(jìn)而,每個(gè)計(jì)數(shù)器記錄的順序與實(shí)時(shí)情況是一致的。
11. 權(quán)益流通證明(PoSV,Proof of Stake Velocity)
采用者:Reddcoin
解釋:PoSV 是作為 PoW 和 PoS 的一種替代方法而提出的,其目的是提高 P2P 網(wǎng)絡(luò)的安全性,進(jìn)而用于確認(rèn) Reddcoin 交易。Reddcoin 是一種加密貨幣,專為加速數(shù)字化時(shí)代的社交交互而提出的。PoSV 在設(shè)計(jì)上鼓勵(lì)所有者(權(quán)益)和活動(dòng)(流通),直接對(duì)應(yīng)于 Reddcoin 作為真實(shí)貨幣的兩個(gè)主要功能,即存儲(chǔ)價(jià)值和交換中介。Reddcoin 也可在異構(gòu)社交場(chǎng)景中作為計(jì)量單位使用。
12. 重要性證明(PoImportance,Proof of Importance)
優(yōu)點(diǎn):在權(quán)益計(jì)算方面要優(yōu)于 PoS。
使用者:NEM
解釋:NEM 共識(shí)網(wǎng)絡(luò)不僅依賴于代幣的數(shù)量,而且依賴于生成系統(tǒng)行動(dòng)得到回報(bào)的可能性。區(qū)塊收益機(jī)率是各種因素之一,此外還包括不好的名聲(受控于不同的框架設(shè)計(jì)目的)、差額,以及從該處做出和得到的交易數(shù)量。它也被稱為“重要性計(jì)算”(Importance Calculation),因?yàn)樗蔀椤坝杏玫摹毕到y(tǒng)成員提供更全面的圖像。
一名用戶要具有資格執(zhí)行重要性計(jì)算,其賬戶余額至少需要為 10000 枚 XEM。考慮到只有不到 90 億枚 XEM 在流通,實(shí)現(xiàn)這一目標(biāo)并非過(guò)于昂貴。在未來(lái) 10000 枚 XEM 的閾值有可能會(huì)發(fā)生變化,但就目前而言,它仍然沒(méi)有變化。重要性計(jì)算是使用特定算法完成的,而不僅僅考慮用戶份額的概率和規(guī)模。
需要指出的是,NEM 的 PoImportance 對(duì)任何操控都具有抵制力。該共識(shí)的底層機(jī)制可緩解女巫攻擊(Sybil Attack)和循環(huán)攻擊問(wèn)題。謹(jǐn)記,“PoImportance 并非 PoS”,盡管兩者很容易被同等看待。
13. 燒毀證明(PoBurn,Proof of Burn)
采用者:Slimcoin、TGCoin(第三代代幣)。
解釋:PoBurn 并非在昂貴的計(jì)算設(shè)備上一擲千金,而通過(guò)發(fā)送代幣到一個(gè)不可檢索地址實(shí)現(xiàn)“燒錢”(Burn)。將代幣發(fā)送到一個(gè)并不存在的地址,用戶將根據(jù)某個(gè)隨機(jī)選擇過(guò)程,獲得整個(gè)生命時(shí)間內(nèi)對(duì)系統(tǒng)挖礦的特權(quán)。
PoBurn 有多種實(shí)現(xiàn)方式,礦工可以燒毀原生的貨幣,或者燒毀一些其它區(qū)塊鏈的貨幣,例如比特幣等。燒毀的代幣越多,用戶就越有機(jī)會(huì)被選中去挖掘下一個(gè)區(qū)塊。
隨時(shí)間的流逝,用戶在系統(tǒng)的權(quán)益會(huì)得到弱化。因此,最終用戶為增加在這個(gè)博彩中被選中的機(jī)會(huì),會(huì)考慮燒掉更多的代幣(這可類比于比特幣的挖礦過(guò)程,用戶必須不斷投資更現(xiàn)代的計(jì)算設(shè)備以維持哈希能力)。
盡管 PoBurn 是一種有意思的 PoW 替代者,但是該協(xié)議依然會(huì)毫無(wú)必要地浪費(fèi)資源。另一個(gè)批評(píng)是,挖礦能力只會(huì)偏向于那些愿意燒掉更多錢的人。
14. 身份證明(PoI,Proof of Identity)
解釋:PoI 是一塊表示了加密事實(shí)的數(shù)據(jù)。它支持用戶指定一個(gè)私鑰,并對(duì)應(yīng)到一個(gè)經(jīng)認(rèn)證的身份,加密將附著到一個(gè)指定的交易。來(lái)自于某些組中的每個(gè)個(gè)體都可以創(chuàng)建 PoF(因?yàn)樗皇且粔K數(shù)據(jù)),并將該數(shù)據(jù)展示給其它任何處理節(jié)點(diǎn)的人。
15. 活動(dòng)證明(PoActivity,Proof Of Activity)
使用者:Decred
解釋:為避免出現(xiàn)惡性通貨膨脹(當(dāng)大量貨幣充斥系統(tǒng)時(shí)就會(huì)發(fā)生),比特幣將只生成兩千一百萬(wàn)枚。這意味著,在某些時(shí)候,比特幣區(qū)塊獎(jiǎng)勵(lì)補(bǔ)貼將終止,比特幣礦工將只能收取交易費(fèi)用。
一些人猜測(cè)這可能會(huì)導(dǎo)致由“公地悲劇(Tragedy of the commons)”所引發(fā)的安全問(wèn)題,人們出于自身利益考慮行事并破壞系統(tǒng)。因此,人們提出了PoActivity作為一種替代 Bitcoin 的激勵(lì)結(jié)構(gòu)。PoActivity 是一種結(jié)合了 PoW 和 PoS 的混合方法。
在 PoActivity 中,挖礦一開(kāi)始使用的是傳統(tǒng)的 PoW,礦工們爭(zhēng)相解決加密難題。根據(jù)實(shí)現(xiàn),挖掘的區(qū)塊不包含任何交易,它們更像模板。因此,勝出的區(qū)塊將只包含頭部信息,以及礦工的獎(jiǎng)勵(lì)地址。
此時(shí),系統(tǒng)將切換到 PoS。PoActivity 根據(jù)頭部信息選擇一組隨機(jī)驗(yàn)證者對(duì)新區(qū)塊簽名。如果一位驗(yàn)證者所擁有的系統(tǒng)中代幣越多,那么該驗(yàn)證者被選中的可能性也會(huì)越大。一旦所有驗(yàn)證者已簽名,那么模板就會(huì)變成一個(gè)完整的區(qū)塊。
如果在完成區(qū)塊時(shí),某些選定的驗(yàn)證者是不可用的,那么就選擇下一個(gè)勝出區(qū)塊,并選擇一組新的驗(yàn)證者,依此類推,直到區(qū)塊收到到正確數(shù)量的簽名。費(fèi)用由礦工和在區(qū)塊上簽名的驗(yàn)證者分?jǐn)偂?/p>
對(duì) PoActivity 的批評(píng)包括挖掘區(qū)塊耗能過(guò)高(與 PoW 一樣),以及無(wú)法阻止驗(yàn)證者做雙重簽名(與 PoS 一樣)。
16. 時(shí)間證明(PoTime,Proof of Time)
使用者:Chronologic
解釋:PoTime 是一種由 Chronologic 提出的共識(shí)算法。Chronologic 設(shè)計(jì)構(gòu)建一種獨(dú)立的區(qū)塊鏈,其首席開(kāi)發(fā)人員提出:我們的問(wèn)題在于,Solidity 中一個(gè)變量可存儲(chǔ)的最大數(shù)是 1076 的數(shù)量級(jí)。這使我們很難處理時(shí)間生成和令牌生成。
17. 存在證明(PoExistence,Proof of Existence)
使用者:Poex.io、HeroNode、DragonChain。
解釋:PoExistence 是一種在線服務(wù),它通過(guò)比特幣區(qū)塊鏈對(duì)交易打時(shí)間戳,驗(yàn)證在特定時(shí)間是否存在計(jì)算機(jī)文件。PoExistence 是作為一項(xiàng)開(kāi)源項(xiàng)目在 2013 年提出的,由 Manuel Araoz 和 Esteban Ordano 開(kāi)發(fā)。
用例:
不泄露實(shí)際內(nèi)容的數(shù)字簽署協(xié)議(Digital Sign Agreement)。
不泄露實(shí)際數(shù)據(jù),展示數(shù)據(jù)的屬主。
記錄時(shí)間戳。
證明屬主。
檢查文檔完整性。
18. Ouroboros
采用者:Cardano
解釋:Ouroboros 是 Cardano 使用的共識(shí)算法。它是 PoS 的一個(gè)變種,具有嚴(yán)格的安全性保證。
19. 可收回證明(PoR,Proof of Retrievability)
采用者:Microsoft
解釋:PoR 是一種緊湊證明,表示文件系統(tǒng)(證明者)中的目標(biāo)文件 F 對(duì)客戶端(驗(yàn)證者)而言是完整的。由于使用 PoR 比傳輸文件 F 本身而言具有更低的通信復(fù)雜性,因此 PoR 對(duì)于構(gòu)建高可靠的遠(yuǎn)程存儲(chǔ)系統(tǒng)是一種頗具吸引力的構(gòu)建模塊。作為一種共識(shí)算法,PoR 對(duì)于云計(jì)算系統(tǒng)非常有用。
20. 拜占庭容錯(cuò)(Byzantine Fault Tolerance)
優(yōu)點(diǎn):高速、可擴(kuò)展。
不足:通常用于私有網(wǎng)絡(luò)和許可網(wǎng)絡(luò)。
采用者:Hyperledger Fabric、Stellar、Ripple、Dispatch
解釋:拜占庭將軍問(wèn)題是分布式計(jì)算中的一個(gè)經(jīng)典問(wèn)題。問(wèn)題描述為,幾位拜占庭將軍分別率領(lǐng)部隊(duì)合力包圍了一座城市。他們必須一致決定是否發(fā)起攻城。如果一些將軍在沒(méi)有其他將軍參與的情況下決定發(fā)起攻城,那么他們的行動(dòng)將以失敗告終。將軍們之間相互隔著一定的距離,必須依靠信息傳遞進(jìn)行交流。 一些加密貨幣協(xié)議在達(dá)成共識(shí)時(shí)使用了特定版本的 BFT,每種版本都具有各自的優(yōu)缺點(diǎn):
實(shí)用拜占庭容錯(cuò)(PBFT,Practical Byzantine Fault Tolerance):首個(gè)提出的該問(wèn)題解決方案稱為“實(shí)用拜占庭容錯(cuò)”(PBFT),當(dāng)前已被 Hyperledger Fabric 采用。PBFT 使用了較少(少于 20 個(gè),之后會(huì)稍有增加)的預(yù)選定將軍數(shù),因此運(yùn)行非常高效。它的優(yōu)點(diǎn)是高交易通量和吞吐量,但是不足之處在于是中心化的,并用于許可網(wǎng)絡(luò)。
聯(lián)邦拜占庭協(xié)議(FBA,F(xiàn)ederated Byzantine Agreement):另一類拜占庭將軍問(wèn)題的解決方案是 FBA,已被 Stellar 和 Ripple 等代幣使用。FBA 的通用理念是每個(gè)拜占庭將軍負(fù)責(zé)自身的鏈、消息一旦到來(lái),通過(guò)排序建立事實(shí)。在 Ripple 中,將軍(驗(yàn)證者)是 Ripple 基金會(huì)預(yù)先選定的。在 Stellar 中,任何人都可以成為驗(yàn)證者,需要用戶選擇去相信哪個(gè)驗(yàn)證者。
由于 FBA 可提供令人難以置信的吞吐量、低交易開(kāi)銷和網(wǎng)絡(luò)擴(kuò)展性,我相信 FBA 類公式算法是目前提出的最好的分布式共識(shí)發(fā)現(xiàn)算法。
21. 授權(quán)拜占庭容錯(cuò)算法(dBFT,Delegated Byzantine Fault Tolerance)
優(yōu)點(diǎn):快速、可擴(kuò)展。
不足:每個(gè)人都爭(zhēng)相成為根鏈。其中可能存在多個(gè)根鏈。
采用者:Neo。
解釋:授權(quán)拜占庭容錯(cuò)算法,簡(jiǎn)稱 dBFT,是一種支持通過(guò)代理投票實(shí)現(xiàn)大規(guī)模參與共識(shí)的拜占庭容錯(cuò)共識(shí)算法。在 Neo 中,令牌持有者可以通過(guò)投票選取其支持的 bookkeeper。之后,選定的 bookkeeper 組采用 BFT 算法達(dá)成共識(shí),并生成新區(qū)塊。Neo 網(wǎng)絡(luò)中的投票是實(shí)時(shí)的,而非因人而異的。
dBFT 可為具有個(gè)共識(shí)節(jié)點(diǎn)的共識(shí)系統(tǒng)提供(f = {{n-1} over 3})容錯(cuò)。這種容錯(cuò)也涵蓋了安全性和可用性、不受將軍和拜占庭錯(cuò)誤影響,并且適合任何網(wǎng)絡(luò)環(huán)境。dBFT 具有很好的最終性(finality),這意味著一旦最終確認(rèn),區(qū)塊將不可分叉,交易將不可再撤銷或是回滾。
Neo 的 dBFT 機(jī)制生成一個(gè)區(qū)塊需 15 到 20 秒鐘。交易吞吐量測(cè)定約為 1000 TPS。這對(duì)于公共區(qū)塊鏈而言,這是很好的性能。通過(guò)一定優(yōu)化,dBFT 具有達(dá)到一萬(wàn) TPSS 的潛力,這樣就可支持大規(guī)模的商業(yè)應(yīng)用。
dBFT 中加入了數(shù)字身份技術(shù),這意味著 bookkeeper 可以是真實(shí)的個(gè)人,也可以是某些機(jī)構(gòu)。因此,dBFT 根據(jù)存在于其本身之中的司法判決,可以凍結(jié)、撤銷、繼承、檢索和擁有代幣兌換權(quán)。它有利于實(shí)現(xiàn)合規(guī)金融資產(chǎn)在 Neo 網(wǎng)絡(luò)中的注冊(cè)。Neo 網(wǎng)絡(luò)從設(shè)計(jì)上,就是在必要時(shí)為此提供支持。
22. RAFT
優(yōu)點(diǎn):
模型比Paxos更簡(jiǎn)單,但提供了同等的安全性。
有多種語(yǔ)言的實(shí)現(xiàn)可用。
不足:通常用于私有網(wǎng)絡(luò)和許可網(wǎng)絡(luò)。
采用者:IPFS Private Cluster、Quorum。
解釋:Raft 是一種是設(shè)計(jì)用于替代Paxos的共識(shí)算法。它的本意就是通過(guò)實(shí)現(xiàn)邏輯分離,比 Paxos 更易于理解。但是它也可以通過(guò)形式化證明是安全的,并提供了一些額外的特性。Raft 提供一種在計(jì)算系統(tǒng)集群中實(shí)現(xiàn)分布狀態(tài)機(jī)的通用方式,確保了集群中的每個(gè)節(jié)點(diǎn)在同一組狀態(tài)轉(zhuǎn)移上取得一致。它具有一系列的開(kāi)源參考實(shí)現(xiàn),包括Go、C++、Java、Scala等語(yǔ)言的完全聲明實(shí)現(xiàn)。
Raft 通過(guò)選取領(lǐng)導(dǎo)者實(shí)現(xiàn)共識(shí)。在 Raft 集群中,一個(gè)服務(wù)器可以是領(lǐng)導(dǎo)者(leader),也可以是追隨者(follower),也可以作為一些特定選舉情況下(例如缺少領(lǐng)導(dǎo)者)的候選者。領(lǐng)導(dǎo)者負(fù)責(zé)向追隨者發(fā)送日志副本。領(lǐng)導(dǎo)者通過(guò)發(fā)送心跳消息,定期通知追隨者自身的存活情況。每位追隨者維護(hù)一個(gè)超時(shí)(通常在 150 到 300 毫秒之間),正常情況下應(yīng)在此時(shí)間范圍內(nèi)收到領(lǐng)導(dǎo)者的心跳。一旦收到心跳,超時(shí)就會(huì)重置。如果沒(méi)有收到心跳,那么追隨者就將自身狀態(tài)更改為候選者,并開(kāi)始領(lǐng)導(dǎo)者選舉。
23. 恒星共識(shí)(Stellar Consensus)
優(yōu)點(diǎn):去中心化控制、低延遲、靈活的信任機(jī)制、漸進(jìn)安全(Asymptotic security)。
采用者:Stellar
解釋:恒星共識(shí)基于上文介紹的聯(lián)邦拜占庭共識(shí)(FBA)。
恒星共識(shí)協(xié)議(SCP,Stellar Consensus Protocol)提供了一種不依賴閉合系統(tǒng)實(shí)現(xiàn)準(zhǔn)確記錄金融交易而達(dá)成共識(shí)的方法。SCP 具有一組可驗(yàn)證的安全屬性,這些屬性根據(jù)如何安全地保持活力而做了優(yōu)化。一旦出現(xiàn)分區(qū)或不當(dāng)行為節(jié)點(diǎn),它將會(huì)終止網(wǎng)絡(luò)過(guò)程,直至達(dá)成共識(shí)。SCP 同時(shí)具備四種屬性:去中心控制、低延遲、靈活信任機(jī)制和漸進(jìn)安全。
24. 置信度證明(PoB,Proof of Believability)
優(yōu)點(diǎn):
通過(guò)使用一種稱為“Servi”的理念,PoB 比傳統(tǒng) PoS 更加去中心化(細(xì)節(jié)在下文給出)。
相比于傳統(tǒng)的 PoS,具有更快的最終性(Finality)。
采用者:IOST
解釋:傳統(tǒng)的 PoS 共識(shí)機(jī)制面臨的主要挑戰(zhàn)是趨向于中心化。為了降低這種風(fēng)險(xiǎn),IOST 引入了“Servi”概念。Servi 不僅衡量了用戶對(duì)社區(qū)的貢獻(xiàn),而且鼓勵(lì)成員為 IOSChain 的持續(xù)發(fā)展做出貢獻(xiàn)。Servi 具有以下屬性:
不可交易性(Non-tradable):由于 Servi 并非設(shè)計(jì)作為一種交換媒介,因此 Servi 不能以任何方式交易或做交換。
自毀性(Self-destructive):驗(yàn)證區(qū)塊后,系統(tǒng)將自動(dòng)清除驗(yàn)證者擁有的 Servi 余額。通過(guò)這種方式,具有高可信度分值的節(jié)點(diǎn)可輪流驗(yàn)證區(qū)塊,確保了公平區(qū)塊的生成。
自發(fā)行性(Self-issuance):Servi 在做出某些貢獻(xiàn)之后(例如,提供社區(qū)服務(wù)、估其他實(shí)體提供的服務(wù),以及其它一些特殊貢獻(xiàn)),將會(huì)自動(dòng)生成并存入用戶帳戶。
傳統(tǒng)的區(qū)塊鏈系統(tǒng)在安全性和吞吐量間存在著固有的折衷,具體取決于分片(shard)的大小。具有大量小分片的系統(tǒng)可提供更好的性能,但抵抗不良行為者的穩(wěn)定性低,反之也是如此(這也是 Casper 面臨的一個(gè)問(wèn)題)。為了在保持安全和提高吞吐量的情況下打破這種權(quán)衡,IOST 創(chuàng)新性地提出了一種用于 IOSChain 的 PoB 共識(shí)協(xié)議。PoB 確保了節(jié)點(diǎn)產(chǎn)生行為不端的可能性微乎其微,同時(shí)通過(guò)確定分片規(guī)模(size-one-shard),顯著地提高了交易吞吐量。
PoB 共識(shí)協(xié)議使用一種分片內(nèi)“可信度優(yōu)先”的方法。該協(xié)議將所有的驗(yàn)證者分為兩組,一組是可信的聯(lián)盟,另一組是正常的聯(lián)盟。在第一階段,可信的驗(yàn)證者快速地處理交易。之后在第二階段,普通驗(yàn)證者對(duì)交易做抽樣并驗(yàn)證,提供最終結(jié)果,確保可驗(yàn)證性。節(jié)點(diǎn)被選入可信聯(lián)盟的機(jī)會(huì)是由可信度分值確定的。可信度分值由多個(gè)因素計(jì)算,包括令牌余額、對(duì)社區(qū)的貢獻(xiàn)、評(píng)論等。具有較高可信度分值的人,更有可能被選入可信聯(lián)盟。可信驗(yàn)證者遵循一定的程序,決定已提交的交易及其訂單的集合,并按順序處理它們。可信驗(yàn)證者也會(huì)構(gòu)成一些較小的組,甚至可以每組一名驗(yàn)證者。交易將在這些可信驗(yàn)證者之間隨機(jī)分配。因此,PoB 會(huì)產(chǎn)生具有極低延遲的較小區(qū)塊。
但是,由于只有一個(gè)節(jié)點(diǎn)在執(zhí)行驗(yàn)證,因此 PoB 可能會(huì)存在安全問(wèn)題。行為不當(dāng)?shù)尿?yàn)證者可能會(huì)提交一些已損壞的交易。為了解決這個(gè)安全問(wèn)題,PoB 指定了一個(gè)采樣概率。普通驗(yàn)證者根據(jù)概率對(duì)交易做采樣,并檢測(cè)交易的不一致性。如果驗(yàn)證者被檢測(cè)出存在不良行為,那么該驗(yàn)證者將會(huì)失去所有系統(tǒng)中的令牌和聲譽(yù),而被欺詐的用戶將獲得所有損失的補(bǔ)償。“可信度優(yōu)先”使處理交易非常快,因?yàn)橹挥幸粋€(gè)(可信的)驗(yàn)證者執(zhí)行驗(yàn)證,并且該驗(yàn)證者不太可能存在行為不端。
25. 有向無(wú)環(huán)圖(DAG,Directed Acyclic Graphs)
優(yōu)點(diǎn):
由于 DAG 的非線性結(jié)構(gòu),它是高度可擴(kuò)展的、快速、節(jié)能、立即實(shí)現(xiàn)終結(jié)性(Finality)。
不足:只能通過(guò)使用 Oracle 實(shí)現(xiàn)智能合約。
采用者:Iota、HashGraph、Byteball、RaiBlocks/Nano。
解釋:DAG 是一種更通用形式的區(qū)塊鏈。由于其獨(dú)特結(jié)構(gòu),DAG 內(nèi)在支持高可擴(kuò)展性,因此也得到了廣泛的使用。
從根本上說(shuō),任何區(qū)塊鏈系統(tǒng)都具有線性結(jié)構(gòu),因?yàn)閰^(qū)塊是依次添加到鏈中的。這使得相比于并行向鏈中添加區(qū)塊,線性區(qū)塊鏈在本質(zhì)上是非常緩慢的。但是對(duì)于 DAG 而言,每個(gè)區(qū)塊和交易只需數(shù)個(gè)前期區(qū)塊得到確認(rèn),就可以并行地添加到區(qū)塊和交易中。這意味著,DAG 在本質(zhì)上是高可擴(kuò)展的。
DAG 存在多種變體,取決于:
· 如何選取前期區(qū)塊驗(yàn)證的算法,也稱為“Tip 選擇算法”。
· 交易完成的順序。
· 如何抵達(dá)完成狀態(tài)。
下面列出一些廣為使用的 DAG 項(xiàng)目。
25.1 Tangle(IOTA)
解釋:Tangle是一種 DAG 共識(shí)算法,由 IOTA 使用。為了發(fā)送一個(gè) IOTA 交易,用戶需要驗(yàn)證接收到的前兩個(gè)交易。在更多交易添加到 Tangle 的情況下,這種二對(duì)一、前瞻性支付的共識(shí)可加強(qiáng)交易的有效性。由于共識(shí)是由交易確定的,因此理論上,如果有人可以生成三分之一的交易,那么他就可以說(shuō)服網(wǎng)絡(luò)中的其余部分,使得他的無(wú)效交易變成有效的。一旦交易量足夠大,使得個(gè)人難以創(chuàng)建三分之一交易量,這時(shí) IOTA 就會(huì)在一個(gè)稱為“協(xié)調(diào)器(The Coordinator)”的中心節(jié)點(diǎn)上對(duì)網(wǎng)絡(luò)中的所有交易做“復(fù)核”(double-checking)。按 ITOA 的說(shuō)法,協(xié)調(diào)員的工作類似于輔助輪。一旦 Tangle 達(dá)到一定的規(guī)模,協(xié)調(diào)員就會(huì)被從中移除。
25.2 Hashgraph
解釋:Hashgraph 是由 Leemon Baird 開(kāi)發(fā)的一種 Gossip 協(xié)議共識(shí)。節(jié)點(diǎn)隨機(jī)與其它節(jié)點(diǎn)共享自身已知的交易,最終所有交易都被以 Gossip 協(xié)議傳播到(Gossip around)到所有節(jié)點(diǎn)。Hashgraph 對(duì)于私有網(wǎng)絡(luò)是一個(gè)很好的選擇。但我們并不會(huì)看到它實(shí)現(xiàn)在以太坊這樣的公共網(wǎng)絡(luò)中,或是不通過(guò) Gossip 協(xié)議隨機(jī)傳播交易。
25.3 Holochain
解釋:Holochain 十分類似于 HashGraph,但不同于 Hashgraph。它提供了一種可用于構(gòu)建去中心化應(yīng)用的數(shù)據(jù)結(jié)構(gòu)。用戶可以具有自己的鏈,并向其中添加包括金融交易在內(nèi)的數(shù)據(jù)。鏈可以采用復(fù)雜的方式合并、拆分和交互。數(shù)據(jù)以去中心化的方式存儲(chǔ)(類似于 Bittorrent)。數(shù)據(jù)具有一個(gè)哈希值,即一個(gè)對(duì)應(yīng)于數(shù)據(jù)的數(shù)學(xué)指紋。如果有人意圖篡改數(shù)據(jù),那么我們就會(huì)注意到在數(shù)據(jù)和哈希值之間存在不匹配,這樣就可拒絕數(shù)據(jù)為無(wú)效的。數(shù)字簽名保證了數(shù)據(jù)的作者身份。Holochain 可看成是“Bittorrent+git+ 數(shù)字簽名”。
25.4 Block-Lattice(Nano)
解釋:Nano(以前稱為 Raiblocks)是以纏繞在區(qū)塊鏈上的方式運(yùn)行,這種方式被稱為“塊狀格子”(Block-lattice)。在 Block-lattice 結(jié)構(gòu)中,每個(gè)用戶(地址)都有自己的鏈,只有用戶本身可寫,每個(gè)用戶都擁有所有鏈的副本。
每個(gè)交易都可分解為發(fā)送者鏈上的發(fā)送區(qū)塊,以及接收者鏈上的接收區(qū)塊。Block-lattice 看上似乎太簡(jiǎn)單,以至于無(wú)法工作,但它已經(jīng)在實(shí)際運(yùn)行了。Block-lattice 的獨(dú)特結(jié)構(gòu)的確無(wú)法抵制一些獨(dú)特的攻擊向量,例如 Penny-spend 攻擊。在這種攻擊中,攻擊者通過(guò)向大量空錢包發(fā)送數(shù)額可忽略不計(jì)的金錢,導(dǎo)致必須要追蹤的鏈數(shù)量急劇膨脹。
25.5 SPECTRE
解釋:SPECTRE,即“序列化 PoW 事件并通過(guò)遞歸選舉確認(rèn)交易”(Serialization of Proof-of-work Events, Confirming Transactions via Recursive Elections),是提議的一種 Bitcoin 擴(kuò)展解決方案。它利用 PoW 和 DAG 的組合實(shí)現(xiàn)可擴(kuò)展的共識(shí)。在 SPECTER 中,一個(gè)挖掘的區(qū)塊指向多個(gè)父節(jié)點(diǎn),而不僅僅是單個(gè)節(jié)點(diǎn),這使得網(wǎng)絡(luò)每秒可以處理多個(gè)區(qū)塊。而挖掘指向某些父區(qū)塊的區(qū)塊,這將支持區(qū)塊的有效性。與 PoW 的“最長(zhǎng)鏈勝出”的原則相比,SPECTER 使用的原則可描述為“擁有最多子節(jié)點(diǎn)的區(qū)塊勝出”。SPECTRE 尚未得到實(shí)際運(yùn)行測(cè)試,因此可能會(huì)存在一些新的攻擊向量。但我認(rèn)為,SPECTRE 很有可能成為一種修正 Bitcoin 問(wèn)題的潛在好做法。
25.6 ByteBall
解釋:ByteBall 使用 DAG 建立交易間的偏序關(guān)系,此外還在 DAG 中添加了“主鏈”(MC,Main Chain)。
圖 DAG 中加粗顯示的“主鏈”
MC 允許在交易間定義全序關(guān)系,即更早加入(直接或間接)MC 的交易,必定更早出現(xiàn)在全序中。如果存在“雙重支付”問(wèn)題,那么將視較早出現(xiàn)在全序中的交易版本為有效的,而其它所有的交易均被視為是無(wú)效的。
根據(jù)交易在圖中的位置,MC 可得到確定性的定義。相關(guān)詳細(xì)信息,請(qǐng)參閱白皮書。作為一般性規(guī)則,MC 傾向于采納由一些總所周知用戶所給出的交易,這樣的用戶被稱為“證人”(Witnesses)。證人列表是由用戶自己定義的,因?yàn)榱斜碇邪擞脩舭l(fā)布的每個(gè)交易。然后,MC 沿著 DAG 內(nèi)路徑推進(jìn)。推進(jìn)原則包括:
· MC 上相鄰交易的證人列表要么完全相同,要么只存在一個(gè)突變。
· 與其它鏈相比,MC 中為經(jīng)過(guò)最多數(shù)量的由見(jiàn)證人認(rèn)證的交易。
ByteBall 也是首個(gè)在系統(tǒng)中包含 Oracle 的平臺(tái)。Oracle 是在 DAG 中添加智能合約功能所必需的。
評(píng)論
查看更多