區(qū)塊鏈共識算法全面詳解

責(zé)任編輯:zsheng

2019-01-04 12:06:08

摘自:電子發(fā)燒友網(wǎng)

共識算法是所有區(qū)塊鏈/DAG的基礎(chǔ),它們構(gòu)成了區(qū)塊鏈/DAG平臺中的最重要部分。如果沒有共識算法,我們得到只是一個(gè)不可寫的啞(dummy)數(shù)據(jù)庫。

我將在本文中盡可能列出所有主要的共識算法,評估各自的優(yōu)劣之處。如果讀者發(fā)現(xiàn)有所遺漏,或是存在錯(cuò)誤,希望能通過評論指出。此外,我個(gè)人也在逐步深入研究共識算法及其對經(jīng)濟(jì)的影響,為此本文也將做定期的更新。

下面列出共識算法。

1. 工作量證明(PoW,Proof of Work)

優(yōu)點(diǎn): 自2009年以來得到了廣泛測試,目前依然得到廣泛的使用。

不足:速度慢。耗能巨大,對環(huán)境不好。易受“規(guī)模經(jīng)濟(jì)”(economies of scale)的影響。

使用者:Bitcoin、Ethereum、Litecoin、Dogecoin等。

類型:有競爭共識(Competitive consensus)。

解釋:PoW是是首個(gè)共識算法。它是由中本聰在他的論文中提出的,用于建立分布式無信任共識并識別“雙重支付”(double spend)問題。PoW并非一個(gè)新理念,但是中本聰將Pow與加密簽名、Merkle鏈和P2P網(wǎng)絡(luò)等已有理念結(jié)合,形成一種可用的分布式共識系統(tǒng)。加密貨幣是這樣系統(tǒng)的首個(gè)基礎(chǔ)和應(yīng)用,因而獨(dú)具創(chuàng)新性。

在PoW的工作方式中,區(qū)塊鏈參與者(稱為“礦工”)要在區(qū)塊鏈中添加一塊交易,必須解決某種“復(fù)雜但是無用”的計(jì)算問題。

本質(zhì)上,這種做法可確保礦工花費(fèi)了一些金錢或資源(礦機(jī))完成工作,這表示了它們將不會(huì)損害區(qū)塊鏈系統(tǒng),因?yàn)閷ο到y(tǒng)的損害也將會(huì)導(dǎo)致投資的損失,進(jìn)而損害他們自身。

為保證運(yùn)行區(qū)塊時(shí)間不變,問題的復(fù)雜性會(huì)發(fā)生變化。有時(shí),會(huì)存在多名礦工同時(shí)解決了問題。在這種情況下,每位礦工從中選取一個(gè)區(qū)塊鏈,并以選取最長鏈者為獲勝者。因此,如果假定大多數(shù)礦工工作在同一個(gè)鏈上,那么成長最快的鏈將成為最長和最值得信任的鏈。這樣,只要由礦工提交的工作有超過一半是值得信任的,那么Bitcoin就是安全的。

2. 權(quán)益證明(PoS,Proof of Stake)

優(yōu)點(diǎn):節(jié)能、攻擊者代價(jià)更大、不易受“規(guī)模經(jīng)濟(jì)”的影響。

不足:“無利害關(guān)系“(Nothing at stake)”攻擊問題。

使用者:Ethereum(即將推出)、Peercoin、Nxt。

類型:有競爭共識。

解釋:PoS是作為Pow的替代技術(shù)提出的,意在解決PoW的一些內(nèi)在問題。PoS沒有使用挖礦方法,而是用戶必須具有系統(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è)美國家庭一日所需的電力。PoS的提出是為了節(jié)約電力耗費(fèi)。

在PoS中,一個(gè)美元就是一個(gè)美元。例如,假定有一萬名每位每分鐘花費(fèi)1美元(一年8760萬美元)的礦工,要比一位具有每分鐘花費(fèi)一萬美元挖掘礦池能力的礦工擁有更少的哈希能力(Hashing Power)。但是在PoS中不支持一次用光所有算力,一美元就是一美元。因此PoS不易受“規(guī)模經(jīng)濟(jì)”的影響。

此外,攻擊PoS系統(tǒng)也要比攻擊PoW系統(tǒng)的代價(jià)更大。引用Vlad Zamfir的說法:

在PoS中,重復(fù)51%攻擊的代價(jià),可類比為每額外運(yùn)行一輪,都會(huì)“燒毀你的ASIC農(nóng)場”。

這意味著,每次攻擊PoS系統(tǒng),攻擊者都會(huì)失去自己的權(quán)益。而在PoW中,攻擊者不會(huì)丟失挖礦設(shè)備,或是代幣。對PoW系統(tǒng)的攻擊只會(huì)使攻擊本身難以執(zhí)行。

但是PoS會(huì)在“無厲害關(guān)系”上出問題。這種對多個(gè)區(qū)塊歷史(forks)投票的方式不會(huì)讓區(qū)塊生成器有任何損失,進(jìn)而阻礙了達(dá)成共識。

區(qū)塊鏈共識算法全面詳解

在 PoS 中,你可以在區(qū)塊鏈的雙方押注資產(chǎn)(“無厲害關(guān)系”問題)。而在 PoW 中,你不能從鏈的兩個(gè)方向同時(shí)挖礦,因?yàn)檫@難以實(shí)現(xiàn)。

不同于 PoW 系統(tǒng)(用戶為擴(kuò)展鏈必須做大量的計(jì)算),PoS 在多個(gè)鏈上工作的代價(jià)很小。有一些項(xiàng)目試圖通過多種方式解決這個(gè)問題(參見“擴(kuò)展閱讀”)。例如,一個(gè)解決方案就是上文所介紹的,對不好的驗(yàn)證者做懲罰。

3. 延遲工作量證明(dPoW,Delayed Proof-of-Work)、

優(yōu)點(diǎn):

節(jié)能、安全性增加、可以通過非直接提供 Bitcoin(或是其它任何安全鏈),添加價(jià)值到其它區(qū)塊鏈,無需付出 Bitcoin(或是其它任何安全鏈)交易的代價(jià)。

不足:

只有使用 PoW 或 PoS 的區(qū)塊鏈,才能采用這種共識算法。

在“公證員激活”(Notaries Active)模式下,必須校準(zhǔn)不同節(jié)點(diǎn)(公證員或正常節(jié)點(diǎn))的哈希率,否則哈希率間的差異會(huì)爆炸(下文將給出詳細(xì)解釋)。

采用者:Komodo

類型:協(xié)同型共識(Collaborative consensus)

解釋:dPoW 是一種混合共識方法,允許一個(gè)區(qū)塊鏈利用第二個(gè)區(qū)塊鏈的哈希算力(Hashing Power)所提供的安全。該機(jī)制是通過一組公證員節(jié)點(diǎn)(Notary Node)實(shí)現(xiàn)的。公證員節(jié)點(diǎn)實(shí)現(xiàn)將第一個(gè)區(qū)塊鏈的數(shù)據(jù)添加到第二個(gè)區(qū)塊鏈中。進(jìn)而,第二個(gè)區(qū)塊鏈請求在兩個(gè)區(qū)塊鏈間達(dá)成妥協(xié),弱化第一個(gè)區(qū)塊鏈的安全。Komodo是首個(gè)使用該共識方法的區(qū)塊鏈,它就是附加于 Bitcoin 區(qū)塊鏈之上的。

區(qū)塊鏈共識算法全面詳解

使用 dPoW 的區(qū)塊鏈也可以使用 PoW 或 PoS 共識方法工作,并可以附加在任何采用 PoW 的區(qū)塊鏈上。但對于由 dPoW 提供安全的區(qū)塊鏈,當(dāng)前 Bitcoin 給出了最高安全層級的哈希率。下圖展示了主區(qū)塊鏈的單個(gè)記錄以及其所附著的 PoW 區(qū)塊鏈。

區(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)爭,進(jìn)而降低網(wǎng)絡(luò)的效率,Komodo 設(shè)計(jì)了一種采用輪詢機(jī)制的挖礦方法。該方法具有兩種運(yùn)行模式。在“無公證人”(No Notary)模式下,支持所有網(wǎng)絡(luò)節(jié)點(diǎn)參與挖礦,這類似于傳統(tǒng) PoW 共識機(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)致一些問題。我在與 Komodo 創(chuàng)始人的一次談話中提及,這將導(dǎo)致公證人礦工和正常礦工間的哈希率存在很高的差異:

區(qū)塊鏈共識算法全面詳解

圖 本文作者與 Komodo 創(chuàng)始人間就不一致性問題進(jìn)行交流的截圖

dPoW 系統(tǒng)在設(shè)計(jì)上支持區(qū)塊鏈在沒有公證人節(jié)點(diǎn)的情況下繼續(xù)運(yùn)行。在這種情況下,dPoW 區(qū)塊鏈可以基于初始的共識方法繼續(xù)運(yùn)行,但將不再具有所附著區(qū)塊鏈增添的安全。

區(qū)塊鏈共識算法全面詳解

所有使用 dPoW 的區(qū)塊鏈可增加安全,同時(shí)降低能耗。例如,Komodo 使用 Equihash 哈希算法防止使用 ASIC 挖礦。其公證人節(jié)點(diǎn)依賴于一種輪詢挖礦方法,獎(jiǎng)勵(lì)機(jī)制考慮了降低節(jié)點(diǎn)間競爭的可能性。這些節(jié)點(diǎn)將會(huì)引發(fā)過度耗能或算力。

此外通過非直接提供 Bitcoin 安全,Komodo 這類 dPoW 區(qū)塊鏈可以向其它區(qū)塊鏈添加價(jià)值,無需付出任何 Bitcoin 交易的代價(jià)。Komodo 此后附著到 Bitcoin,而第三個(gè)使用 dPoW 的區(qū)塊鏈可以將自身附著到 Komodo。使用這種方式,dPoW 區(qū)塊鏈不必直接附著到 Bitcoin 區(qū)塊鏈,就從 Bitcoin 的高哈希率中受益。

最后一點(diǎn),公證人節(jié)點(diǎn)和正常節(jié)點(diǎn)分離的功能,確保了初始共識機(jī)制在公證人節(jié)點(diǎn)失敗時(shí)繼續(xù)運(yùn)行。這種相互獨(dú)立性建立了一種獎(jiǎng)勵(lì)機(jī)制,使得其它網(wǎng)絡(luò)無需依賴于 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)的問題。

采用者:BitShares、Steemit、EOS、Lisk、Ark。

類型:協(xié)同型共識

解釋:在 DPoS 系統(tǒng)中,權(quán)益持有者可以選舉領(lǐng)導(dǎo)者(或稱為見證人,Witness)。經(jīng)權(quán)益持有者授權(quán),這些領(lǐng)導(dǎo)者可進(jìn)行投票。該機(jī)制使得 DPoS 要快于正常的 PoS。

例如,EOS 中選舉出 21 位見證人,并且有一堆節(jié)點(diǎn)(潛在的見證人)作為候選者。一旦見證人節(jié)點(diǎn)死亡或是做出了惡意行為,新節(jié)點(diǎn)就會(huì)立刻替代見證人節(jié)點(diǎ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è)見證人在分配給他的時(shí)間槽中未生成區(qū)塊,那么該時(shí)間槽就被跳過,并由下一位見證人生成下一個(gè)區(qū)塊。如果見證人持續(xù)丟失他的區(qū)塊,或是發(fā)布了錯(cuò)誤的交易,那么權(quán)益持有者將投票決定其退出,用更好的見證人替換他。

在 DPoS 中,礦工可以合作生成塊,而不是像在 PoW 和 PoS 中那樣競爭生成。通過區(qū)塊生成的部分中心化,DPoS 的運(yùn)行可以比其它共識算法呈數(shù)量級快。

5. 權(quán)威證明(PoA,Proof-of-Authority)

優(yōu)點(diǎn):節(jié)能、快速。

不足:略為中心化。雖然可用于公有區(qū)塊鏈,但是通常用于私有區(qū)塊鏈和許可區(qū)塊鏈。

使用者:POA.Network、Ethereum Kovan testnet、VeChain。

類型:協(xié)同型共識。

解釋:基于 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ū)塊中。該過程是自動(dòng)的,無需驗(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ī)。通過對身份附加一個(gè)聲譽(yù),可以鼓勵(lì)驗(yàn)證者去維護(hù)交易的過程。因?yàn)轵?yàn)證者并不希望讓自己獲得負(fù)面聲譽(yù),這會(huì)使其失去來之不易的驗(yàn)證者地位。

6. 權(quán)重證明(PoWeight,Proof-of-Weight)

優(yōu)點(diǎn):節(jié)能、高度可定制和可擴(kuò)展

不足:可能難以實(shí)現(xiàn)激勵(lì)、

采用者:Algorand。

類型:有競爭共識。

解釋:權(quán)重證明(PoWeight)是一類很寬泛的共識算法,它基于Algorand共識模型。其基本理念是在 PoS 中,用戶所擁有的網(wǎng)絡(luò)中令牌的百分比,表示了該用戶“發(fā)現(xiàn)”下一個(gè)區(qū)塊的概率。PoWeight 系統(tǒng)中還使用了其它一些相對加權(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é)同型共識。

解釋:PoR 類似于 PoA。GoChain 文檔中給出了如下描述:

PoR 共識模型依賴參與者在保持網(wǎng)絡(luò)安全中的聲譽(yù)。參與者(區(qū)塊簽名者)必須具有足夠重要的聲譽(yù)。一旦他們嘗試欺騙系統(tǒng),那么他們將要面對嚴(yán)重的財(cái)政上的和自己名聲上的后果。這是一個(gè)相對的概念,如果他們被抓到試圖欺騙,那么幾乎所有的業(yè)務(wù)將會(huì)受到嚴(yán)重的影響。規(guī)模越大的企業(yè),通常將會(huì)失去更多。這樣,相比使用更少的企業(yè)(即更小規(guī)模的商業(yè)),規(guī)模更大的企業(yè)更易于被選定。

一旦一個(gè)企業(yè)證明了自己的聲譽(yù),并通過了驗(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á)到去中心化。

對于所有參與者而言,更易于驗(yàn)證領(lǐng)導(dǎo)者是通過合法選舉產(chǎn)生的。

控制領(lǐng)導(dǎo)者選舉過程的代價(jià),是與從中獲得的價(jià)值成正比的。

不足:

盡管 PoET 的代價(jià)低,但是必須要使用特定的硬件。因此不會(huì)被大規(guī)模采納。

不適用于公有區(qū)塊鏈。

采用者:HyperLedger Sawtooth

類型:有競爭共識

解釋:PoET 共識機(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í)間。最先醒來的節(jié)點(diǎn),即具有最短等待時(shí)間的節(jié)點(diǎn),喚醒并向區(qū)塊鏈提交一個(gè)新區(qū)塊,然后廣播必要的信息到整個(gè)對等網(wǎng)絡(luò)中。同一過程將會(huì)重復(fù),以發(fā)現(xiàn)下一個(gè)區(qū)塊。

在 PoET 網(wǎng)絡(luò)共識機(jī)制中,需要確保兩個(gè)重要因素。第一,參與節(jié)點(diǎn)在本質(zhì)上會(huì)自然地選取一個(gè)隨機(jī)的時(shí)間,而非某一個(gè)參與者為勝出而刻意選取了較短的時(shí)間。第二,勝出者的確完成了等待時(shí)間。

PoET 理念是由著名的芯片制造巨頭 Intel 于 2016 年早期提出的。Intel 為解決“隨機(jī)領(lǐng)導(dǎo)者選舉”的計(jì)算問題,實(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ò)共識的透明度。

PoET 通過控制代價(jià)實(shí)現(xiàn)了共識過程,該代價(jià)依然是與從過程中獲得的價(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)境友好。

可用于惡意軟件檢測。通過確定處理器的 L1 緩存是否為空(例如,具有足夠空間在沒有緩存未命中的情況下計(jì)算 PoSpace 過程),或是包含一個(gè)拒絕被逐出(evicted)的例程。

可用于反垃圾郵件措施,以及防范拒絕服務(wù)(DoS)攻擊。

不足:激勵(lì)機(jī)制可能存在問題。

使用者: Burstcoin、Chia、SpaceMint。

類型:協(xié)同型共識。

解釋:PoSpace,也稱為 PoC,通過分配一定數(shù)量的內(nèi)存或磁盤空間用于解決服務(wù)提供者所提供挑戰(zhàn)的方式,顯示了某個(gè)人對某個(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)證過程需要盡量高效,即消耗盡可能少的空間和時(shí)間。出于公平性上的考慮,如果驗(yàn)證者沒有保留所聲明數(shù)量的空間,那么它應(yīng)該難以通過驗(yàn)證。PoSpace 的一種實(shí)現(xiàn)方式是通過使用一個(gè)難以實(shí)現(xiàn) Pebbling 的圖。驗(yàn)證者請求證明者構(gòu)建對一個(gè)“非 Pebbling 圖”標(biāo)記。證明者提交標(biāo)記,進(jìn)而驗(yàn)證者請求證明者在提交中開放多個(gè)隨機(jī)位置。

由于存儲(chǔ)的通用本質(zhì),以及存儲(chǔ)所需的更低耗能,PoSpace 被認(rèn)為是一種更公平、更綠色的替換方法。

10. 歷史證明(PoHistory,Proof of History)

采用者:Solana

解釋:其基本理念是不相信交易中的時(shí)間戳,而是證明交易在某個(gè)事件之前或之后的某個(gè)時(shí)刻發(fā)生。

如果我們對某期《紐約時(shí)報(bào)》的封面拍了張照片,那么我們就創(chuàng)建了一個(gè)證明,即我們的拍照時(shí)間是在該報(bào)紙發(fā)行之后,或許也可能是我們有某種途徑影響了紐約時(shí)報(bào)的正常發(fā)行。我們可以使用 PoHistory 創(chuàng)建一個(gè)歷史記錄,證明一個(gè)事件是發(fā)生在特定時(shí)間之后的。

區(qū)塊鏈共識算法全面詳解

PoHistory 是一種高頻可驗(yàn)證延遲函數(shù)(VDF,Verifiable Delay Function)。VDF 求值需要完成特定數(shù)量的順序步驟,然后生成一個(gè)唯一的輸出。該輸出可被高效地和公開地驗(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核的暴力攻擊,該過程是不可能并行化的。

因此我們可以確認(rèn),每個(gè)計(jì)數(shù)器在生成過程中都的確經(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)(流通),直接對應(yīng)于 Reddcoin 作為真實(shí)貨幣的兩個(gè)主要功能,即存儲(chǔ)價(jià)值和交換中介。Reddcoin 也可在異構(gòu)社交場景中作為計(jì)量單位使用。

12. 重要性證明(PoImportance,Proof of Importance)

優(yōu)點(diǎn):在權(quán)益計(jì)算方面要優(yōu)于 PoS。

使用者:NEM

解釋:NEM 共識網(wǎng)絡(luò)不僅依賴于代幣的數(shù)量,而且依賴于生成系統(tǒng)行動(dòng)得到回報(bào)的可能性。區(qū)塊收益機(jī)率是各種因素之一,此外還包括不好的名聲(受控于不同的框架設(shè)計(jì)目的)、差額,以及從該處做出和得到的交易數(shù)量。它也被稱為“重要性計(jì)算”(Importance Calculation),因?yàn)樗蔀?ldquo;有用的”系統(tǒng)成員提供更全面的圖像。

一名用戶要具有資格執(zhí)行重要性計(jì)算,其賬戶余額至少需要為 10000 枚 XEM??紤]到只有不到 90 億枚 XEM 在流通,實(shí)現(xiàn)這一目標(biāo)并非過于昂貴。在未來 10000 枚 XEM 的閾值有可能會(huì)發(fā)生變化,但就目前而言,它仍然沒有變化。重要性計(jì)算是使用特定算法完成的,而不僅僅考慮用戶份額的概率和規(guī)模。

需要指出的是,NEM 的 PoImportance 對任何操控都具有抵制力。該共識的底層機(jī)制可緩解女巫攻擊(Sybil Attack)和循環(huán)攻擊問題。謹(jǐn)記,“PoImportance 并非 PoS”,盡管兩者很容易被同等看待。

13. 燒毀證明(PoBurn,Proof of Burn)

采用者:Slimcoin、TGCoin(第三代代幣)。

解釋:PoBurn 并非在昂貴的計(jì)算設(shè)備上一擲千金,而通過發(fā)送代幣到一個(gè)不可檢索地址實(shí)現(xiàn)“燒錢”(Burn)。將代幣發(fā)送到一個(gè)并不存在的地址,用戶將根據(jù)某個(gè)隨機(jī)選擇過程,獲得整個(gè)生命時(shí)間內(nèi)對系統(tǒng)挖礦的特權(quán)。

PoBurn 有多種實(shí)現(xiàn)方式,礦工可以燒毀原生的貨幣,或者燒毀一些其它區(qū)塊鏈的貨幣,例如比特幣等。燒毀的代幣越多,用戶就越有機(jī)會(huì)被選中去挖掘下一個(gè)區(qū)塊。

隨時(shí)間的流逝,用戶在系統(tǒng)的權(quán)益會(huì)得到弱化。因此,最終用戶為增加在這個(gè)博彩中被選中的機(jī)會(huì),會(huì)考慮燒掉更多的代幣(這可類比于比特幣的挖礦過程,用戶必須不斷投資更現(xiàn)代的計(jì)算設(shè)備以維持哈希能力)。

盡管 PoBurn 是一種有意思的 PoW 替代者,但是該協(xié)議依然會(huì)毫無必要地浪費(fèi)資源。另一個(gè)批評是,挖礦能力只會(huì)偏向于那些愿意燒掉更多錢的人。

14. 身份證明(PoI,Proof of Identity)

解釋:PoI 是一塊表示了加密事實(shí)的數(shù)據(jù)。它支持用戶指定一個(gè)私鑰,并對應(yīng)到一個(gè)經(jīng)認(rèn)證的身份,加密將附著到一個(gè)指定的交易。來自于某些組中的每個(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ā)生),比特幣將只生成兩千一百萬枚。這意味著,在某些時(shí)候,比特幣區(qū)塊獎(jiǎng)勵(lì)補(bǔ)貼將終止,比特幣礦工將只能收取交易費(fèi)用。

一些人猜測這可能會(huì)導(dǎo)致由“公地悲劇(Tragedy of the commons)”所引發(fā)的安全問題,人們出于自身利益考慮行事并破壞系統(tǒng)。因此,人們提出了PoActivity作為一種替代 Bitcoin 的激勵(lì)結(jié)構(gòu)。PoActivity 是一種結(jié)合了 PoW 和 PoS 的混合方法。

在 PoActivity 中,挖礦一開始使用的是傳統(tǒng)的 PoW,礦工們爭相解決加密難題。根據(jù)實(shí)現(xiàn),挖掘的區(qū)塊不包含任何交易,它們更像模板。因此,勝出的區(qū)塊將只包含頭部信息,以及礦工的獎(jiǎng)勵(lì)地址。

此時(shí),系統(tǒng)將切換到 PoS。PoActivity 根據(jù)頭部信息選擇一組隨機(jī)驗(yàn)證者對新區(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>

對 PoActivity 的批評包括挖掘區(qū)塊耗能過高(與 PoW 一樣),以及無法阻止驗(yàn)證者做雙重簽名(與 PoS 一樣)。

16. 時(shí)間證明(PoTime,Proof of Time)

使用者:Chronologic

解釋:PoTime 是一種由 Chronologic 提出的共識算法。Chronologic 設(shè)計(jì)構(gòu)建一種獨(dú)立的區(qū)塊鏈,其首席開發(fā)人員提出:我們的問題在于,Solidity 中一個(gè)變量可存儲(chǔ)的最大數(shù)是 1076 的數(shù)量級。這使我們很難處理時(shí)間生成和令牌生成。

17. 存在證明(PoExistence,Proof of Existence)

使用者:Poex.io、HeroNode、DragonChain。

解釋:PoExistence 是一種在線服務(wù),它通過比特幣區(qū)塊鏈對交易打時(shí)間戳,驗(yàn)證在特定時(shí)間是否存在計(jì)算機(jī)文件。PoExistence 是作為一項(xiàng)開源項(xiàng)目在 2013 年提出的,由 Manuel Araoz 和 Esteban Ordano 開發(fā)。

用例:

不泄露實(shí)際內(nèi)容的數(shù)字簽署協(xié)議(Digital Sign Agreement)。

不泄露實(shí)際數(shù)據(jù),展示數(shù)據(jù)的屬主。

記錄時(shí)間戳。

證明屬主。

檢查文檔完整性。

18. Ouroboros

采用者:Cardano

解釋:Ouroboros 是 Cardano 使用的共識算法。它是 PoS 的一個(gè)變種,具有嚴(yán)格的安全性保證。

19. 可收回證明(PoR,Proof of Retrievability)

采用者:Microsoft

解釋:PoR 是一種緊湊證明,表示文件系統(tǒng)(證明者)中的目標(biāo)文件 F 對客戶端(驗(yàn)證者)而言是完整的。由于使用 PoR 比傳輸文件 F 本身而言具有更低的通信復(fù)雜性,因此 PoR 對于構(gòu)建高可靠的遠(yuǎn)程存儲(chǔ)系統(tǒng)是一種頗具吸引力的構(gòu)建模塊。作為一種共識算法,PoR 對于云計(jì)算系統(tǒng)非常有用。

20. 拜占庭容錯(cuò)(Byzantine Fault Tolerance)

優(yōu)點(diǎn):高速、可擴(kuò)展。

不足:通常用于私有網(wǎng)絡(luò)和許可網(wǎng)絡(luò)。

采用者:Hyperledger Fabric、Stellar、Ripple、Dispatch

解釋:拜占庭將軍問題是分布式計(jì)算中的一個(gè)經(jīng)典問題。問題描述為,幾位拜占庭將軍分別率領(lǐng)部隊(duì)合力包圍了一座城市。他們必須一致決定是否發(fā)起攻城。如果一些將軍在沒有其他將軍參與的情況下決定發(fā)起攻城,那么他們的行動(dòng)將以失敗告終。將軍們之間相互隔著一定的距離,必須依靠信息傳遞進(jìn)行交流。 一些加密貨幣協(xié)議在達(dá)成共識時(shí)使用了特定版本的 BFT,每種版本都具有各自的優(yōu)缺點(diǎn):

實(shí)用拜占庭容錯(cuò)(PBFT,Practical Byzantine Fault Tolerance):首個(gè)提出的該問題解決方案稱為“實(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):另一類拜占庭將軍問題的解決方案是 FBA,已被 Stellar 和 Ripple 等代幣使用。FBA 的通用理念是每個(gè)拜占庭將軍負(fù)責(zé)自身的鏈、消息一旦到來,通過排序建立事實(shí)。在 Ripple 中,將軍(驗(yàn)證者)是 Ripple 基金會(huì)預(yù)先選定的。在 Stellar 中,任何人都可以成為驗(yàn)證者,需要用戶選擇去相信哪個(gè)驗(yàn)證者。

由于 FBA 可提供令人難以置信的吞吐量、低交易開銷和網(wǎng)絡(luò)擴(kuò)展性,我相信 FBA 類公式算法是目前提出的最好的分布式共識發(fā)現(xiàn)算法。

21. 授權(quán)拜占庭容錯(cuò)算法(dBFT,Delegated Byzantine Fault Tolerance)

優(yōu)點(diǎn):快速、可擴(kuò)展。

不足:每個(gè)人都爭相成為根鏈。其中可能存在多個(gè)根鏈。

采用者:Neo。

解釋:授權(quán)拜占庭容錯(cuò)算法,簡稱 dBFT,是一種支持通過代理投票實(shí)現(xiàn)大規(guī)模參與共識的拜占庭容錯(cuò)共識算法。在 Neo 中,令牌持有者可以通過投票選取其支持的 bookkeeper。之后,選定的 bookkeeper 組采用 BFT 算法達(dá)成共識,并生成新區(qū)塊。Neo 網(wǎng)絡(luò)中的投票是實(shí)時(shí)的,而非因人而異的。

dBFT 可為具有個(gè)共識節(jié)點(diǎn)的共識系統(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 秒鐘。交易吞吐量測定約為 1000 TPS。這對于公共區(qū)塊鏈而言,這是很好的性能。通過一定優(yōu)化,dBFT 具有達(dá)到一萬 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ò)中的注冊。Neo 網(wǎng)絡(luò)從設(shè)計(jì)上,就是在必要時(shí)為此提供支持。

22. RAFT

優(yōu)點(diǎn):

模型比Paxos更簡單,但提供了同等的安全性。

有多種語言的實(shí)現(xiàn)可用。

不足:通常用于私有網(wǎng)絡(luò)和許可網(wǎng)絡(luò)。

采用者:IPFS Private Cluster、Quorum。

解釋:Raft 是一種是設(shè)計(jì)用于替代Paxos的共識算法。它的本意就是通過實(shí)現(xiàn)邏輯分離,比 Paxos 更易于理解。但是它也可以通過形式化證明是安全的,并提供了一些額外的特性。Raft 提供一種在計(jì)算系統(tǒng)集群中實(shí)現(xiàn)分布狀態(tài)機(jī)的通用方式,確保了集群中的每個(gè)節(jié)點(diǎn)在同一組狀態(tài)轉(zhuǎn)移上取得一致。它具有一系列的開源參考實(shí)現(xiàn),包括Go、C++、Java、Scala等語言的完全聲明實(shí)現(xiàn)。

Raft 通過選取領(lǐng)導(dǎo)者實(shí)現(xiàn)共識。在 Raft 集群中,一個(gè)服務(wù)器可以是領(lǐng)導(dǎo)者(leader),也可以是追隨者(follower),也可以作為一些特定選舉情況下(例如缺少領(lǐng)導(dǎo)者)的候選者。領(lǐng)導(dǎo)者負(fù)責(zé)向追隨者發(fā)送日志副本。領(lǐng)導(dǎo)者通過發(fā)送心跳消息,定期通知追隨者自身的存活情況。每位追隨者維護(hù)一個(gè)超時(shí)(通常在 150 到 300 毫秒之間),正常情況下應(yīng)在此時(shí)間范圍內(nèi)收到領(lǐng)導(dǎo)者的心跳。一旦收到心跳,超時(shí)就會(huì)重置。如果沒有收到心跳,那么追隨者就將自身狀態(tài)更改為候選者,并開始領(lǐng)導(dǎo)者選舉。

23. 恒星共識(Stellar Consensus)

優(yōu)點(diǎn):去中心化控制、低延遲、靈活的信任機(jī)制、漸進(jìn)安全(Asymptotic security)。

采用者:Stellar

解釋:恒星共識基于上文介紹的聯(lián)邦拜占庭共識(FBA)。

恒星共識協(xié)議(SCP,Stellar Consensus Protocol)提供了一種不依賴閉合系統(tǒng)實(shí)現(xiàn)準(zhǔn)確記錄金融交易而達(dá)成共識的方法。SCP 具有一組可驗(yàn)證的安全屬性,這些屬性根據(jù)如何安全地保持活力而做了優(yōu)化。一旦出現(xiàn)分區(qū)或不當(dāng)行為節(jié)點(diǎn),它將會(huì)終止網(wǎng)絡(luò)過程,直至達(dá)成共識。SCP 同時(shí)具備四種屬性:去中心控制、低延遲、靈活信任機(jī)制和漸進(jìn)安全。

24. 置信度證明(PoB,Proof of Believability)

優(yōu)點(diǎn):

通過使用一種稱為“Servi”的理念,PoB 比傳統(tǒng) PoS 更加去中心化(細(xì)節(jié)在下文給出)。

相比于傳統(tǒng)的 PoS,具有更快的最終性(Finality)。

采用者:IOST

解釋:傳統(tǒng)的 PoS 共識機(jī)制面臨的主要挑戰(zhàn)是趨向于中心化。為了降低這種風(fēng)險(xiǎn),IOST 引入了“Servi”概念。Servi 不僅衡量了用戶對社區(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 余額。通過這種方式,具有高可信度分值的節(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è)問題)。為了在保持安全和提高吞吐量的情況下打破這種權(quán)衡,IOST 創(chuàng)新性地提出了一種用于 IOSChain 的 PoB 共識協(xié)議。PoB 確保了節(jié)點(diǎn)產(chǎn)生行為不端的可能性微乎其微,同時(shí)通過確定分片規(guī)模(size-one-shard),顯著地提高了交易吞吐量。

PoB 共識協(xié)議使用一種分片內(nèi)“可信度優(yōu)先”的方法。該協(xié)議將所有的驗(yàn)證者分為兩組,一組是可信的聯(lián)盟,另一組是正常的聯(lián)盟。在第一階段,可信的驗(yàn)證者快速地處理交易。之后在第二階段,普通驗(yàn)證者對交易做抽樣并驗(yàn)證,提供最終結(jié)果,確保可驗(yàn)證性。節(jié)點(diǎn)被選入可信聯(lián)盟的機(jī)會(huì)是由可信度分值確定的??尚哦确种涤啥鄠€(gè)因素計(jì)算,包括令牌余額、對社區(qū)的貢獻(xiàn)、評論等。具有較高可信度分值的人,更有可能被選入可信聯(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ì)存在安全問題。行為不當(dāng)?shù)尿?yàn)證者可能會(huì)提交一些已損壞的交易。為了解決這個(gè)安全問題,PoB 指定了一個(gè)采樣概率。普通驗(yàn)證者根據(jù)概率對交易做采樣,并檢測交易的不一致性。如果驗(yàn)證者被檢測出存在不良行為,那么該驗(yàn)證者將會(huì)失去所有系統(tǒng)中的令牌和聲譽(yù),而被欺詐的用戶將獲得所有損失的補(bǔ)償。“可信度優(yōu)先”使處理交易非常快,因?yàn)橹挥幸粋€(gè)(可信的)驗(yàn)證者執(zhí)行驗(yàn)證,并且該驗(yàn)證者不太可能存在行為不端。

25. 有向無環(huán)圖(DAG,Directed Acyclic Graphs)

優(yōu)點(diǎn):

由于 DAG 的非線性結(jié)構(gòu),它是高度可擴(kuò)展的、快速、節(jié)能、立即實(shí)現(xiàn)終結(jié)性(Finality)。

不足:只能通過使用 Oracle 實(shí)現(xiàn)智能合約。

采用者:Iota、HashGraph、Byteball、RaiBlocks/Nano。

解釋:DAG 是一種更通用形式的區(qū)塊鏈。由于其獨(dú)特結(jié)構(gòu),DAG 內(nèi)在支持高可擴(kuò)展性,因此也得到了廣泛的使用。

從根本上說,任何區(qū)塊鏈系統(tǒng)都具有線性結(jié)構(gòu),因?yàn)閰^(qū)塊是依次添加到鏈中的。這使得相比于并行向鏈中添加區(qū)塊,線性區(qū)塊鏈在本質(zhì)上是非常緩慢的。但是對于 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)

區(qū)塊鏈共識算法全面詳解

解釋:Tangle是一種 DAG 共識算法,由 IOTA 使用。為了發(fā)送一個(gè) IOTA 交易,用戶需要驗(yàn)證接收到的前兩個(gè)交易。在更多交易添加到 Tangle 的情況下,這種二對一、前瞻性支付的共識可加強(qiáng)交易的有效性。由于共識是由交易確定的,因此理論上,如果有人可以生成三分之一的交易,那么他就可以說服網(wǎng)絡(luò)中的其余部分,使得他的無效交易變成有效的。一旦交易量足夠大,使得個(gè)人難以創(chuàng)建三分之一交易量,這時(shí) IOTA 就會(huì)在一個(gè)稱為“協(xié)調(diào)器(The Coordinator)”的中心節(jié)點(diǎn)上對網(wǎng)絡(luò)中的所有交易做“復(fù)核”(double-checking)。按 ITOA 的說法,協(xié)調(diào)員的工作類似于輔助輪。一旦 Tangle 達(dá)到一定的規(guī)模,協(xié)調(diào)員就會(huì)被從中移除。

25.2 Hashgraph

解釋:Hashgraph 是由 Leemon Baird 開發(fā)的一種 Gossip 協(xié)議共識。節(jié)點(diǎn)隨機(jī)與其它節(jié)點(diǎn)共享自身已知的交易,最終所有交易都被以 Gossip 協(xié)議傳播到(Gossip around)到所有節(jié)點(diǎn)。Hashgraph 對于私有網(wǎng)絡(luò)是一個(gè)很好的選擇。但我們并不會(huì)看到它實(shí)現(xiàn)在以太坊這樣的公共網(wǎng)絡(luò)中,或是不通過 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è)對應(yīng)于數(shù)據(jù)的數(shù)學(xué)指紋。如果有人意圖篡改數(shù)據(jù),那么我們就會(huì)注意到在數(shù)據(jù)和哈希值之間存在不匹配,這樣就可拒絕數(shù)據(jù)為無效的。數(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è)用戶都擁有所有鏈的副本。

區(qū)塊鏈共識算法全面詳解

每個(gè)交易都可分解為發(fā)送者鏈上的發(fā)送區(qū)塊,以及接收者鏈上的接收區(qū)塊。Block-lattice 看上似乎太簡單,以至于無法工作,但它已經(jīng)在實(shí)際運(yùn)行了。Block-lattice 的獨(dú)特結(jié)構(gòu)的確無法抵制一些獨(dú)特的攻擊向量,例如 Penny-spend 攻擊。在這種攻擊中,攻擊者通過向大量空錢包發(fā)送數(shù)額可忽略不計(jì)的金錢,導(dǎo)致必須要追蹤的鏈數(shù)量急劇膨脹。

25.5 SPECTRE

解釋:SPECTRE,即“序列化 PoW 事件并通過遞歸選舉確認(rèn)交易”(Serialization of Proof-of-work Events, Confirming Transactions via Recursive Elections),是提議的一種 Bitcoin 擴(kuò)展解決方案。它利用 PoW 和 DAG 的組合實(shí)現(xiàn)可擴(kuò)展的共識。在 SPECTER 中,一個(gè)挖掘的區(qū)塊指向多個(gè)父節(jié)點(diǎn),而不僅僅是單個(gè)節(jié)點(diǎn),這使得網(wǎng)絡(luò)每秒可以處理多個(gè)區(qū)塊。而挖掘指向某些父區(qū)塊的區(qū)塊,這將支持區(qū)塊的有效性。與 PoW 的“最長鏈勝出”的原則相比,SPECTER 使用的原則可描述為“擁有最多子節(jié)點(diǎn)的區(qū)塊勝出”。SPECTRE 尚未得到實(shí)際運(yùn)行測試,因此可能會(huì)存在一些新的攻擊向量。但我認(rèn)為,SPECTRE 很有可能成為一種修正 Bitcoin 問題的潛在好做法。

25.6 ByteBall

解釋:ByteBall 使用 DAG 建立交易間的偏序關(guān)系,此外還在 DAG 中添加了“主鏈”(MC,Main Chain)。

區(qū)塊鏈共識算法全面詳解

圖 DAG 中加粗顯示的“主鏈”

MC 允許在交易間定義全序關(guān)系,即更早加入(直接或間接)MC 的交易,必定更早出現(xiàn)在全序中。如果存在“雙重支付”問題,那么將視較早出現(xiàn)在全序中的交易版本為有效的,而其它所有的交易均被視為是無效的。

根據(jù)交易在圖中的位置,MC 可得到確定性的定義。相關(guān)詳細(xì)信息,請參閱白皮書。作為一般性規(guī)則,MC 傾向于采納由一些總所周知用戶所給出的交易,這樣的用戶被稱為“證人”(Witnesses)。證人列表是由用戶自己定義的,因?yàn)榱斜碇邪擞脩舭l(fā)布的每個(gè)交易。然后,MC 沿著 DAG 內(nèi)路徑推進(jìn)。推進(jìn)原則包括:

· MC 上相鄰交易的證人列表要么完全相同,要么只存在一個(gè)突變。

· 與其它鏈相比,MC 中為經(jīng)過最多數(shù)量的由見證人認(rèn)證的交易。

ByteBall 也是首個(gè)在系統(tǒng)中包含 Oracle 的平臺。Oracle 是在 DAG 中添加智能合約功能所必需的。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號