去中心化:比特幣如何實(shí)現(xiàn)權(quán)力下放區(qū)塊鏈

火星財(cái)經(jīng) 2018-08-19 13:23
分享到:
導(dǎo)讀

比特幣實(shí)現(xiàn)去中心化的機(jī)制并非純技術(shù)問(wèn)題,而是技術(shù)手段和智能激勵(lì)工程的結(jié)合。

去中心化:比特幣如何實(shí)現(xiàn)權(quán)力下放

在本章中,我們將討論Bitcoin中的權(quán)力下放(去中心化)。在第一章中,我們研究了比特幣基礎(chǔ)的加密基礎(chǔ),并以我們稱之為ScroogeCoin的簡(jiǎn)單貨幣來(lái)結(jié)束。ScroogeCoin在基于分類帳的加密系統(tǒng)中實(shí)現(xiàn)了很多我們想要的功能,但它有一個(gè)明顯的問(wèn)題——它依賴于稱為Scrooge的集中式權(quán)限。我們?cè)谌绾蜗路呕蛘呷ブ行幕@個(gè)貨幣中結(jié)束了這個(gè)問(wèn)題,問(wèn)答這個(gè)問(wèn)題將成為本章的重點(diǎn)。

在閱讀本章時(shí),請(qǐng)注意,比特幣實(shí)現(xiàn)去中心化的機(jī)制并非純技術(shù)問(wèn)題,而是技術(shù)手段和智能激勵(lì)工程的結(jié)合。在本章結(jié)尾,您應(yīng)該很贊賞這種權(quán)力是如何下放的,更一般來(lái)說(shuō),Bitcoin是如何工作的,以及為什么它是安全的。

2.1中心化與去中心化

去中心化不是比特幣唯一一個(gè)重要的概念。在各種不同的數(shù)字技術(shù)中,出現(xiàn)了中心化與去中心化競(jìng)爭(zhēng)范式的概念。為了更好地了解它是如何在比特幣發(fā)揮作用的,在其他各種情況下理解中央沖突(這兩種范式之間的緊張關(guān)系)是有用的。

一方面,我們有了互聯(lián)網(wǎng),一個(gè)有名的去中心化系統(tǒng),歷史上競(jìng)爭(zhēng)并戰(zhàn)勝了“圍墻內(nèi)的花園”,比如AOL和CompuServe的信息服務(wù)。然后,出現(xiàn)了電子郵件,其核心是基于簡(jiǎn)單郵件傳輸協(xié)議(SMIP)的分散系統(tǒng),這是一種開(kāi)放標(biāo)準(zhǔn)。雖然它有來(lái)自Facebook或LinkedIn郵件等專有郵件系統(tǒng)的競(jìng)爭(zhēng),但電子郵件仍然是個(gè)人與個(gè)人在線通信的默認(rèn)工具。就即時(shí)消息和短信來(lái)說(shuō),我們有一個(gè)不能被明確描述為集中式或分散式的混合模型。最后還有社交網(wǎng)絡(luò):盡管業(yè)余愛(ài)好者、開(kāi)發(fā)者和企業(yè)家為了創(chuàng)造出主流中心化系統(tǒng)的替代品做了多次努力,但像Facebook和LinkedIn這樣的集中式系統(tǒng)仍然主宰著這個(gè)空間。事實(shí)上,這個(gè)沖突早在數(shù)字時(shí)代就有了,我們看到電話、廣播、電視和電影的歷史上也有這兩個(gè)模式間的類似斗爭(zhēng)。

去中心化并非全部或什么都沒(méi)有;幾乎沒(méi)有一個(gè)系統(tǒng)是完全分散式的或純粹集中的。例如,電子郵件基本上是基于標(biāo)準(zhǔn)化協(xié)議(SMTP)的分散式系統(tǒng),任何想的人都可以操作自己的電子郵件服務(wù)器。然而,市場(chǎng)上發(fā)生的情況是,少數(shù)集中的網(wǎng)絡(luò)郵件提供商已成為主流。同樣,雖然Bitcoin的協(xié)議是分散式的,像Bitcoin交易的服務(wù),你可以將Bitcoin轉(zhuǎn)換成其他貨幣,而錢包軟件或允許人們管理其Bitcoin的軟件可能會(huì)在不同程度上集中或分散。

考慮到這一點(diǎn),讓我們將Bitcoin協(xié)議如何實(shí)現(xiàn)去中心化分解成為五個(gè)更具體的問(wèn)題:

1.誰(shuí)維護(hù)交易的分類賬?

2.誰(shuí)擁有決定哪些交易有效的權(quán)力?

3.誰(shuí)創(chuàng)造新的比特幣?

4.誰(shuí)決定系統(tǒng)規(guī)則如何改變?

5.比特幣如何獲得交換價(jià)值?

前三個(gè)問(wèn)題反映了比特幣協(xié)議的技術(shù)細(xì)節(jié),正是這些問(wèn)題將成為本章的重點(diǎn)。

比特幣的不同方面落在中心化/去中心化范圍的不同點(diǎn)上。對(duì)等網(wǎng)絡(luò)(p2p)接近于純粹的分布式,因?yàn)槿魏稳硕伎梢赃\(yùn)行Bitcoin節(jié)點(diǎn),并且進(jìn)入門檻相當(dāng)?shù)汀D憧梢陨暇W(wǎng),輕松下載Bitcoin客戶端,并在筆記本電腦或PC上運(yùn)行節(jié)點(diǎn)。目前有數(shù)千個(gè)這樣的節(jié)點(diǎn)。本章稍后研究的比特幣礦業(yè)在技術(shù)上也適用于任何人,但需要非常高的資本成本。因此,在比特幣礦業(yè)生態(tài)系統(tǒng)中,集權(quán)力或權(quán)力集中度較高。Bitcoin社區(qū)的許多人都認(rèn)為這是非常不方便的。第三個(gè)方面是比特幣節(jié)點(diǎn)運(yùn)行軟件的更新,這關(guān)系到系統(tǒng)規(guī)則如何以及何時(shí)更改。可以想象,與電子郵件一樣,協(xié)議有許多互操作的實(shí)現(xiàn)。但在實(shí)踐中,大多數(shù)節(jié)點(diǎn)運(yùn)行參考實(shí)現(xiàn),其開(kāi)發(fā)人員被社區(qū)充分信任并具有很大的權(quán)力。

2.2分布式共識(shí)

我們以通用的方式討論了集權(quán)和去中心化。現(xiàn)在我們來(lái)看看比特幣在更技術(shù)層面的去中心化。在本次討論中將出現(xiàn)的一個(gè)關(guān)鍵術(shù)語(yǔ)是共識(shí),具體而言,是分布式共識(shí)。建立分布式電子現(xiàn)金系統(tǒng)解決的關(guān)鍵技術(shù)問(wèn)題是實(shí)現(xiàn)分布式共識(shí)。直觀地,你可以想到我們的目標(biāo)是分散ScroogeCoin,這是我們?cè)诘谝徽驴吹降募傧胴泿拧?/p>

分布式共識(shí)具有多種應(yīng)用,并已在計(jì)算機(jī)科學(xué)方面進(jìn)行了數(shù)十年的研究。傳統(tǒng)的激勵(lì)應(yīng)用是可靠的分布式系統(tǒng)。想象一下,您負(fù)責(zé)Facebook等大型社交網(wǎng)絡(luò)公司的后端。這種系統(tǒng)通常具有數(shù)千甚至數(shù)百萬(wàn)臺(tái)服務(wù)器,這些服務(wù)器一起形成一個(gè)大量的分布式數(shù)據(jù)庫(kù),記錄系統(tǒng)中發(fā)生的所有動(dòng)作。每條信息必須記錄在該后端的幾個(gè)不同的節(jié)點(diǎn)上,并且節(jié)點(diǎn)必須與系統(tǒng)的整體狀態(tài)保持一致。

具有分布式共識(shí)協(xié)議的含義遠(yuǎn)遠(yuǎn)超出了這一傳統(tǒng)應(yīng)用。如果我們有這樣一個(gè)協(xié)議,我們可以使用它來(lái)構(gòu)建一個(gè)龐大的,分布式的鍵值存儲(chǔ),將任意鍵或名稱映射到任意值。一個(gè)分布式的鍵值存儲(chǔ)又可以實(shí)現(xiàn)許多應(yīng)用。例如,我們可以使用它來(lái)構(gòu)建一個(gè)分布式的域名系統(tǒng),它只是人類可理解的域名與IP地址之間的映射。我們可以建立一個(gè)公共密鑰目錄,它是電子郵件地址(或某種其他形式的真實(shí)身份)與公共密鑰之間的映射。

這是最直觀的分布式共識(shí),但對(duì)于提供技術(shù)定義是有用的,因?yàn)檫@將有助于我們決定給定的協(xié)議是否符合要求。

分布式共識(shí)協(xié)議:有n個(gè)節(jié)點(diǎn),每個(gè)都有一個(gè)輸入值。其中有一些節(jié)點(diǎn)有故障或惡意。分布式共識(shí)協(xié)議具有以下兩個(gè)屬性:

·它必須終止于所有在價(jià)值上達(dá)成一致的誠(chéng)實(shí)節(jié)點(diǎn)

··該值必須由一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)生成

在比特幣的背景下這是什么意思?要了解分布式共識(shí)如何在比特幣中發(fā)揮作用,請(qǐng)記住Bitcoin是一個(gè)點(diǎn)對(duì)點(diǎn)系統(tǒng)。當(dāng)Alice想支付給Bob時(shí),她實(shí)際上做的是將交易通過(guò)對(duì)等網(wǎng)絡(luò)廣播到所有比特幣節(jié)點(diǎn)。見(jiàn)圖2.1

第2章:比特幣如何實(shí)現(xiàn)權(quán)力下放(去中心化)

圖2.1廣播一個(gè)交易為了支付Bob,Alice將交易廣播到整個(gè)Bitcoin對(duì)等網(wǎng)絡(luò)

順便提一句,你可能已經(jīng)注意到,Alice將交易廣播到所有比特幣點(diǎn)對(duì)點(diǎn)節(jié)點(diǎn),但是Bob的電腦在這張圖中沒(méi)有位置。Bob當(dāng)然可以運(yùn)行對(duì)等網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn)。事實(shí)上,如果他希望被告知這個(gè)交易確實(shí)發(fā)生了,并且他得到了報(bào)酬,那么運(yùn)行一個(gè)節(jié)點(diǎn)可能是個(gè)好主意。盡管如此,Bob并不需要在網(wǎng)絡(luò)上偵聽(tīng);Bob不必要通過(guò)運(yùn)行一個(gè)節(jié)點(diǎn)來(lái)收到資金。不管他是否在網(wǎng)絡(luò)上操作一個(gè)節(jié)點(diǎn),比特幣都將是他的。

究竟什么樣的節(jié)點(diǎn)可能希望在比特幣網(wǎng)絡(luò)上達(dá)成共識(shí)呢?鑒于各種用戶正在將這些交易廣播到網(wǎng)絡(luò),節(jié)點(diǎn)必須準(zhǔn)確同意廣播哪些交易以及這些交易發(fā)生的順序。這將導(dǎo)致系統(tǒng)的單個(gè)全局分類賬。回想一下,在ScroogeCoin中,為了優(yōu)化,我們將交易放在區(qū)塊中。同樣,在比特幣方面,我們?cè)谥饏^(qū)塊的基礎(chǔ)上達(dá)成共識(shí)。

所以,在任何一個(gè)給定的點(diǎn)上,對(duì)等網(wǎng)絡(luò)(p2p)中的所有節(jié)點(diǎn)都有一個(gè)由一系列區(qū)塊組成的分類賬,每個(gè)區(qū)塊都包含一個(gè)已經(jīng)達(dá)成共識(shí)的交易列表。此外,每個(gè)節(jié)點(diǎn)都有一個(gè)聽(tīng)說(shuō)了,但尚未被包含在區(qū)塊鏈中的未完成交易池。對(duì)于這些交易,共識(shí)尚未產(chǎn)生,因此根據(jù)定義,每個(gè)節(jié)點(diǎn)可能有稍微不同版本的未完成交易池。實(shí)際上,這是因?yàn)閷?duì)等網(wǎng)絡(luò)不完美,所以一些節(jié)點(diǎn)可能已經(jīng)聽(tīng)說(shuō)過(guò)其他節(jié)點(diǎn)沒(méi)有聽(tīng)說(shuō)過(guò)的交易。

節(jié)點(diǎn)如何在區(qū)塊上達(dá)成共識(shí)?一種做到這點(diǎn)的方法是:定期每隔10分鐘,系統(tǒng)中的每個(gè)節(jié)點(diǎn)都會(huì)提議自己未完成的交易池作為下一個(gè)區(qū)塊。然后節(jié)點(diǎn)執(zhí)行一些共識(shí)協(xié)議,其中每個(gè)節(jié)點(diǎn)的輸入是它自己提出的區(qū)塊。現(xiàn)在,一些節(jié)點(diǎn)可能是惡意的,并將無(wú)效的交易放入其區(qū)塊中,但是我們可以假定其他節(jié)點(diǎn)是誠(chéng)實(shí)的。如果共識(shí)協(xié)議成功,則將選擇有效的區(qū)塊作為輸出。即使所選區(qū)塊僅由一個(gè)節(jié)點(diǎn)提議,只要該區(qū)塊有效,則它也是一個(gè)有效的輸出。現(xiàn)在可能有一些有效的但未完成的交易未被包含在塊中,但這不是問(wèn)題。如果某些交易以某種方式?jīng)]有進(jìn)入這個(gè)特定的塊,那么它只能等待進(jìn)入下一個(gè)塊。

前一段中的方法與Bitcoin如何工作有一些相似之處,但它并不完全如此。這種方法有一些技術(shù)問(wèn)題。首先,一般來(lái)說(shuō),共識(shí)是一個(gè)難題,因?yàn)楣?jié)點(diǎn)可能會(huì)崩潰或者完全是惡意的。其次,特別是在比特幣上下文中,網(wǎng)絡(luò)是非常不完美的。它是一個(gè)對(duì)等系統(tǒng),并不是所有的節(jié)點(diǎn)對(duì)都相互連接。例如,由于互聯(lián)網(wǎng)連接不良,網(wǎng)絡(luò)中可能會(huì)出現(xiàn)故障,而且運(yùn)行協(xié)商一致的協(xié)議,其中所有節(jié)點(diǎn)都必須參與,這是不可能的。最后,系統(tǒng)中會(huì)有很多延遲,因?yàn)樗椴蓟ヂ?lián)網(wǎng)。

側(cè)欄:比特幣協(xié)議必須對(duì)兩種障礙達(dá)成一致:網(wǎng)絡(luò)中的缺陷,如延遲和節(jié)點(diǎn)崩潰,以及一些節(jié)點(diǎn)故意破壞進(jìn)程的企圖。

這種高延遲的一個(gè)特定后果是沒(méi)有全球時(shí)間的概念。這意味著并不是所有的節(jié)點(diǎn)都能夠簡(jiǎn)單的基于觀察時(shí)間戳來(lái)同意事件的常見(jiàn)排序。因此,共識(shí)協(xié)議不能包含形式的指令,“步驟1中發(fā)送第一個(gè)消息的節(jié)點(diǎn)必須在步驟2中執(zhí)行X”。這根本不起作用,因?yàn)椴⒉皇撬械墓?jié)點(diǎn)都將同意在協(xié)議的步驟1中首先發(fā)送哪條消息。

不可能的結(jié)果全球時(shí)間的缺乏嚴(yán)重限制了可被用于共識(shí)協(xié)議的算法集。事實(shí)上,由于這些限制,大多數(shù)分布式共識(shí)的文獻(xiàn)有點(diǎn)悲觀,許多不可能的結(jié)果已被證明。一個(gè)非常有名的不可能的結(jié)果涉及拜占庭將軍的問(wèn)題。在這個(gè)經(jīng)典問(wèn)題上,拜占庭的軍隊(duì)被分為師,各由一個(gè)將軍指揮。將軍通過(guò)信使溝通,制定聯(lián)合行動(dòng)計(jì)劃。一些將領(lǐng)可能是叛徒,有可能故意試圖破壞進(jìn)行,以便使忠誠(chéng)的將軍無(wú)法達(dá)成一個(gè)統(tǒng)一的計(jì)劃。這個(gè)問(wèn)題的目標(biāo)是讓所有忠誠(chéng)的將軍達(dá)成同樣的計(jì)劃,沒(méi)有叛國(guó)的將軍能致使他們采取壞的計(jì)劃。已經(jīng)證明,如果有三分之一以上的將軍是叛徒,計(jì)劃是不可能實(shí)現(xiàn)的。

一個(gè)更為微妙的不可能的結(jié)果,因首先證明了它的作者的名字而廣為人知,被稱為費(fèi)舍爾-林奇-帕特森不可能的結(jié)果。在某些條件下,包括以確定性方式行事的節(jié)點(diǎn),他們證明即使是單一的錯(cuò)誤進(jìn)程,共識(shí)也是不可能達(dá)成的。

盡管有這些不可能的結(jié)果,文獻(xiàn)中也有一些共識(shí)協(xié)議。這些協(xié)議中更廣為人知的一個(gè)是Paxos。Paxos做出了一些妥協(xié)。一方面,它從不產(chǎn)生不一致的結(jié)果。另一方面,它接受在某些條件下,即使罕見(jiàn)的條件下的交易,該協(xié)議可能會(huì)卡住,不取得任何進(jìn)展。

打破傳統(tǒng)假設(shè)但有一個(gè)好消息:這些不可能的結(jié)果在一個(gè)非常特殊的模型中被證明。它們旨在研究分布式數(shù)據(jù)庫(kù),且該模型對(duì)比特幣的設(shè)置并不非常好,因?yàn)楸忍貛胚`反了模型中許多內(nèi)置的假設(shè)。在某種程度上,結(jié)果告訴我們更多關(guān)于模型,而不是關(guān)于分布式共識(shí)的問(wèn)題。

具有諷刺意味的是,隨著目前的研究狀況,Bitcoin的共識(shí)在實(shí)踐中比在理論上更好。也就是說(shuō),我們觀察到了工作的共識(shí),但沒(méi)有發(fā)展理論來(lái)充分解釋它為什么工作。但是,發(fā)展這樣的理論是重要的,因?yàn)樗梢詭椭覀冾A(yù)測(cè)不可預(yù)見(jiàn)的攻擊和問(wèn)題,只有當(dāng)我們對(duì)比特幣共識(shí)如何工作的有了很大的理解,才能保證比特幣的安全性和穩(wěn)定性。

傳統(tǒng)模式下,比特幣違約的共識(shí)假設(shè)是什么?首先,它介紹了激勵(lì)的思想,這對(duì)于分布式共識(shí)協(xié)議是新穎的。這只能在比特幣上可能實(shí)現(xiàn),因?yàn)樗且环N貨幣,因而具有激勵(lì)參與者誠(chéng)實(shí)行事的自然機(jī)制。所以比特幣在一般意義上并不能很好地解決分布式共識(shí)問(wèn)題,但在貨幣體系的具體情況下能得到解決。

第二,比特幣信奉隨機(jī)性的概念。我們將在接下來(lái)的兩節(jié)中看到,比特幣的共識(shí)算法在很大程度上依賴于隨機(jī)化。另外,它擺脫了共識(shí)的特定出發(fā)點(diǎn)和結(jié)束點(diǎn)的概念。相反,共識(shí)在很長(zhǎng)一段時(shí)間內(nèi)發(fā)生,在實(shí)際系統(tǒng)中大約一個(gè)小時(shí)。但即使在那個(gè)時(shí)間結(jié)束時(shí),節(jié)點(diǎn)也不能確定任何特定的交易或區(qū)塊已經(jīng)成為分類賬。相反,隨著時(shí)間的推移,你對(duì)任何區(qū)塊的看法將與最終的共識(shí)視圖相匹配的可能性增加,視圖分歧的幾率也將呈指數(shù)下降。模型中的這些差異是比特幣如何繞過(guò)分布式共識(shí)協(xié)議的傳統(tǒng)不可能結(jié)果的關(guān)鍵。

2.3使用區(qū)塊鏈的無(wú)身份共識(shí)

在本節(jié)中,我們將研究比特幣共識(shí)算法的技術(shù)細(xì)節(jié)。回想一下,比特幣節(jié)點(diǎn)沒(méi)有持久的長(zhǎng)期身份。這是與傳統(tǒng)的分布式共識(shí)算法的另一個(gè)區(qū)別。缺乏身份的一個(gè)原因是,在對(duì)等的系統(tǒng)中,沒(méi)有中央權(quán)力機(jī)構(gòu)為參與者分配身份,并確保他們不會(huì)隨意創(chuàng)建新的節(jié)點(diǎn)。這個(gè)技術(shù)術(shù)語(yǔ)是Sybil攻擊。Sybils只是惡意的對(duì)手創(chuàng)建的節(jié)點(diǎn)副本,它看起來(lái)像有很多不同的參與者,實(shí)際上所有這些偽參與者都是由同一個(gè)對(duì)手控制的。另一個(gè)原因是匿名本質(zhì)上是比特幣的一個(gè)目標(biāo)。即使可能或容易為所有節(jié)點(diǎn)或所有參與者建立身份,我們也不一定要這樣做。雖然Bitcoin并沒(méi)有提供強(qiáng)有力的匿名保證,因?yàn)橐粋€(gè)人所做的不同交易通常可以聯(lián)系在一起,但它確實(shí)有這樣的特性:沒(méi)有人被迫透露他們的現(xiàn)實(shí)身份,比如他們的名字或IP地址,以便參加。這是Bitcoin設(shè)計(jì)的一個(gè)重要特性和核心特征。

如果節(jié)點(diǎn)確實(shí)有身份,那么設(shè)計(jì)會(huì)更容易。對(duì)于初學(xué)者來(lái)說(shuō),身份將允許我們放入表單的協(xié)議指令:“現(xiàn)在具有最低數(shù)字ID的節(jié)點(diǎn)應(yīng)該采取一些步驟。”沒(méi)有身份,可能的指令集更受約束。但是,對(duì)于節(jié)點(diǎn)來(lái)說(shuō),具有身份更重要的原因是為了安全。如果節(jié)點(diǎn)被識(shí)別,且創(chuàng)建新的節(jié)點(diǎn)身份不再微不足道,那么我們就可以對(duì)惡意節(jié)點(diǎn)的數(shù)量做出假設(shè),從中派生出安全屬性。

我們可以通過(guò)做出較弱的假設(shè)來(lái)彌補(bǔ)身份缺失。假設(shè)在某種程度上有能力在系統(tǒng)中選擇一個(gè)隨機(jī)節(jié)點(diǎn)。一個(gè)很好的激勵(lì)類比是彩票或抽獎(jiǎng),或者任何數(shù)量的很難追蹤人的現(xiàn)實(shí)生活的系統(tǒng),給他們身份,然后驗(yàn)證這些身份。我們?cè)谶@些情況下所做令牌(代幣)或者類似的東西。這使我們隨后能夠選擇一個(gè)隨機(jī)的令牌ID,并調(diào)用該ID的所有者。所以現(xiàn)在呢,要有一個(gè)信念的飛躍,并且假設(shè)有可能以這種方式從比特幣網(wǎng)絡(luò)中選擇一個(gè)隨機(jī)節(jié)點(diǎn)。進(jìn)一步假設(shè),目前這個(gè)代幣生成和分配算法足夠智能,所以如果對(duì)手要嘗試創(chuàng)建很多Sybil節(jié)點(diǎn),那么所有這些Sybils一起只會(huì)得到一個(gè)令牌。這意味著對(duì)手無(wú)法通過(guò)創(chuàng)建新的節(jié)點(diǎn)來(lái)增加他的權(quán)力。如果你認(rèn)為這里有很多假設(shè),別擔(dān)心。在本章的后面,我們將刪除這些假設(shè),并詳細(xì)顯示如何在Bitcoin中實(shí)現(xiàn)與之相當(dāng)?shù)膶傩浴?/p>

隱含的共識(shí)這種隨機(jī)節(jié)點(diǎn)選擇的假設(shè)有可能成為隱含的共識(shí)。我們的協(xié)議中有多個(gè)回合,每個(gè)對(duì)應(yīng)于區(qū)塊鏈中的不同塊。在每一輪中,一個(gè)隨機(jī)節(jié)點(diǎn)以某種方式被選擇,并且該節(jié)點(diǎn)提議鏈中下一個(gè)區(qū)塊。沒(méi)有一致的算法來(lái)選擇區(qū)塊,也沒(méi)有任何類型的投票。所選節(jié)點(diǎn)單方面提議區(qū)塊鏈中的下一個(gè)區(qū)塊將是什么。但是,如果那個(gè)節(jié)點(diǎn)是惡意的呢?那么有一個(gè)處理這問(wèn)題的過(guò)程,但它是一個(gè)隱含的過(guò)程。其他節(jié)點(diǎn)將通過(guò)選擇是否在其頂部構(gòu)建區(qū)塊來(lái)隱含的接受或拒絕該區(qū)塊。如果它們接受該區(qū)塊,它們將通過(guò)擴(kuò)展包含接受區(qū)塊的塊鏈來(lái)表示它們的驗(yàn)收。相比之下,如果他們拒絕該區(qū)塊,他們將通過(guò)忽略該區(qū)塊來(lái)擴(kuò)展鏈,并建立在他們接受的前一個(gè)區(qū)塊之上。回想一下,每個(gè)區(qū)塊包含它擴(kuò)展的區(qū)塊的哈希。這是一種技術(shù)機(jī)制,允許節(jié)點(diǎn)示意哪個(gè)區(qū)塊是它們正在擴(kuò)展的區(qū)塊。

比特幣共識(shí)算法(簡(jiǎn))

該算法得到了簡(jiǎn)化,假設(shè)它具有以不易遭受Sybil攻擊的方式選擇隨機(jī)節(jié)點(diǎn)的能力。

1.新的交易將廣播到所有節(jié)點(diǎn)

2.每個(gè)節(jié)點(diǎn)將新的交易收集到區(qū)塊中

3.在每一輪中,一個(gè)隨機(jī)節(jié)點(diǎn)開(kāi)始廣播它的區(qū)塊

4.其他節(jié)點(diǎn)只有在區(qū)塊中所有的交易都有效(未使用,有效簽名)時(shí)才接受該區(qū)塊

5.節(jié)點(diǎn)通過(guò)將其哈希包含在所創(chuàng)建的下一個(gè)區(qū)塊中來(lái)表示對(duì)該區(qū)塊的接受

現(xiàn)在讓我們來(lái)看看為什么這個(gè)共識(shí)算法有效。為了做到這一點(diǎn),讓我們考慮一個(gè)惡意對(duì)手——我們稱之為Alice——可能會(huì)顛覆這個(gè)過(guò)程。

竊取Bitcoin Alice可以在她無(wú)法控制的地址上簡(jiǎn)單地竊取屬于另一個(gè)用戶的比特幣嗎?不,即使是由Alice來(lái)提議區(qū)塊鏈的下一個(gè)區(qū)塊,她也不能竊取其他用戶的比特幣。這樣做將需要Alice創(chuàng)建一個(gè)使用該硬幣的有效交易。這將需要Alice偽造所有者的簽名,如果該簽名使用的是安全數(shù)字簽名方案,則她不能這樣做。所以只要底層的加密是堅(jiān)實(shí)的,她就不能簡(jiǎn)單地竊取比特幣。

拒絕服務(wù)攻擊 讓我們考慮另一次攻擊。說(shuō)Alice真的不喜歡其他像Bob一樣的用戶。然后,Alice可以決定,她不會(huì)將任何鮑伯地址的交易包含在她提議進(jìn)入?yún)^(qū)塊鏈的任何區(qū)塊中。換句話說(shuō),她拒絕為Bob服務(wù)。雖然這是Alice可以嘗試的一個(gè)有效的攻擊,但幸運(yùn)的是這只是一個(gè)小煩惱。如果Bob的交易沒(méi)有進(jìn)入Alice提議的下一個(gè)區(qū)塊,那么他只要等到一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)有機(jī)會(huì)提出一個(gè)區(qū)塊,然后他的交易將進(jìn)入該區(qū)塊。所以這也不是一個(gè)很好的攻擊。

雙重攻擊Alice可能會(huì)嘗試發(fā)起雙重攻擊。為了理解這個(gè)工作原理,讓我們假設(shè)Alice是由Bob管理的一些在線商家或網(wǎng)站的客戶,他提供一些在線服務(wù)來(lái)?yè)Q取比特幣的支付。比方說(shuō),Bob的服務(wù)允許下載一些軟件。這里可能是雙重花費(fèi)攻擊如何工作的。Alice在Bob的網(wǎng)站上向她的購(gòu)物車添加了一個(gè)項(xiàng)目,服務(wù)器請(qǐng)求付款。然后,Alice從她的地址創(chuàng)建一個(gè)比特幣交易到Bob的地址,并將其廣播到網(wǎng)站。比方說(shuō),一些誠(chéng)實(shí)的節(jié)點(diǎn)創(chuàng)建下一個(gè)區(qū)塊,并在該區(qū)塊中包括此交易。所以現(xiàn)在有一個(gè)由一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)創(chuàng)建的區(qū)塊,它包含代表從Alice向商人Bob付款的一個(gè)交易。

回想一下,一個(gè)交易是一個(gè)包含Alice簽名的一個(gè)數(shù)據(jù)結(jié)構(gòu),一個(gè)支付給Bob的公鑰指令,和一個(gè)哈希。這個(gè)哈希表示一個(gè)Alice收到的先前交易輸出的指針,現(xiàn)在正在消費(fèi)。該指針必須引用在共享鏈中先前區(qū)塊中的交易

注意,順便說(shuō)一句,這里有兩種容易混淆的不同類型的哈希指針。區(qū)塊包括一個(gè)哈希指針,指向他們正在擴(kuò)展的上一個(gè)區(qū)塊。交易包括一個(gè)或多個(gè)哈希指針,這些指針指向正在贖回的前一個(gè)交易輸出。

讓我們回到Alice如何發(fā)起雙重支付攻擊。最新的區(qū)塊由一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)生成,并包括一個(gè)Alice支付給Bob進(jìn)行軟件下載的交易。在看到這個(gè)包含在區(qū)塊鏈中的交易的時(shí)候,Bob斷定Alice已經(jīng)支付給了他,并允許Alice下載軟件。假設(shè)下一輪中選擇的下一個(gè)隨機(jī)節(jié)點(diǎn)恰好由Alice控制。現(xiàn)在,既然Alice提議下一個(gè)區(qū)塊,她可以提出一個(gè)忽略了包含對(duì)Bob付款的區(qū)塊,取而代之的是一個(gè)指向前一個(gè)區(qū)塊的指針。此外,在她提議的區(qū)塊中,Alice包含一個(gè)交易,將她發(fā)送給鮑伯的硬幣轉(zhuǎn)移到她自己控制的另一個(gè)地址。這是一個(gè)經(jīng)典的雙重支付模式。由于兩筆交易花費(fèi)相同的硬幣,所以只有其中之一可以包含在區(qū)塊鏈中。如果Alice成功的在區(qū)塊鏈中將付款包含在自己的地址中,那么她支付Bob的交易是無(wú)用的,因?yàn)樗肋h(yuǎn)不會(huì)被包含在區(qū)塊鏈中。

第2章:比特幣如何實(shí)現(xiàn)權(quán)力下放(去中心化)

圖2.2雙重支付嘗試 Alice創(chuàng)造了兩個(gè)交易:一個(gè)是她發(fā)送比特幣給Bob,另一個(gè)是她通過(guò)發(fā)送到她控制的不同地址來(lái)雙重支付這些比特幣。當(dāng)他們花費(fèi)相同的比特幣時(shí),這些交易中只有一個(gè)可以包含在區(qū)塊鏈中。箭頭中是從一個(gè)區(qū)塊到前一個(gè)區(qū)塊的指針,其擴(kuò)展在它自己的內(nèi)容中包含前一個(gè)區(qū)塊的哈希。Ca用于表示Alice擁有的硬幣。

我們?cè)趺粗肋@個(gè)雙重支付的嘗試是否會(huì)成功?這取決于哪一個(gè)區(qū)塊將最終導(dǎo)致長(zhǎng)期共識(shí)鏈——一個(gè)與Alice→Bob交易或一個(gè)與Alice→Alice交易。什么決定哪個(gè)區(qū)塊將被包含進(jìn)去?誠(chéng)實(shí)節(jié)點(diǎn)遵循延長(zhǎng)最長(zhǎng)有效分支的政策,那么分支機(jī)構(gòu)將擴(kuò)展哪一個(gè)?這沒(méi)有正確的答案!在這一點(diǎn)上,兩個(gè)分支擁有相同的長(zhǎng)度——它們只在最后一個(gè)區(qū)塊中有所不同同,而這兩個(gè)區(qū)塊都是有效的。選擇下一個(gè)區(qū)塊的節(jié)點(diǎn)可能決定在其中一個(gè)區(qū)塊上進(jìn)行構(gòu)建,然后,這個(gè)選擇將在很大程度上決定雙重支付是否能夠成功。

一個(gè)微妙的觀點(diǎn):從道德的角度來(lái)看,包含支付給Bob的交易的區(qū)塊和包含Alice將這些硬幣花費(fèi)到自己地址的交易的區(qū)塊之間有明顯的區(qū)別。但是,這個(gè)區(qū)別只是基于我們對(duì)Alice首先支付Bob,并試圖雙重支付的故事的了解。然而,從技術(shù)角度來(lái)看,這兩個(gè)交易完全相同,兩個(gè)區(qū)塊同樣有效。正在看這一點(diǎn)的節(jié)點(diǎn)確實(shí)無(wú)法告訴我們哪個(gè)是合乎道德的合法交易。

在實(shí)踐中,節(jié)點(diǎn)通常遵循擴(kuò)展它們?cè)趯?duì)等網(wǎng)絡(luò)中首先聽(tīng)到的區(qū)塊的啟發(fā)式方法。但是,這不是一個(gè)可靠的規(guī)則。在任何情況下,由于網(wǎng)絡(luò)延遲,可能很容易的是,節(jié)點(diǎn)首先聽(tīng)到的區(qū)塊實(shí)際上是第二個(gè)創(chuàng)建的區(qū)塊。因此,至少有一些機(jī)會(huì),下一個(gè)獲得提議區(qū)塊的節(jié)點(diǎn)將擴(kuò)展包含雙重支付的區(qū)塊。Alice還可以進(jìn)一步嘗試通過(guò)賄賂下一個(gè)節(jié)點(diǎn)來(lái)增加這種情況發(fā)生的可能性。如果下一個(gè)節(jié)點(diǎn)以任何原因構(gòu)建在雙重支付區(qū)塊上,那么這個(gè)鏈現(xiàn)在將比包含Bob交易的那個(gè)鏈長(zhǎng)。此時(shí),下一個(gè)誠(chéng)實(shí)節(jié)點(diǎn)更有可能繼續(xù)在這條鏈上構(gòu)建,因?yàn)樗L(zhǎng)。這個(gè)過(guò)程將會(huì)持續(xù)下去,包含雙重支付的區(qū)塊將越來(lái)越有可能成為長(zhǎng)期共識(shí)鏈的一部分。另一方面,包含與Bob交易的區(qū)塊被網(wǎng)絡(luò)完全忽略,現(xiàn)在稱之為孤立區(qū)塊。

現(xiàn)在讓我們從Bob——商人的角度重新考慮這個(gè)整體情況。了解Bob如何保護(hù)自己免受這種雙重支付攻擊是理解Bitcoin安全性的關(guān)鍵部分。當(dāng)Alice廣播代表她付給Bob的交易時(shí),Bob正在網(wǎng)絡(luò)上收聽(tīng),甚至在下一個(gè)塊被創(chuàng)建之前聽(tīng)到關(guān)于這個(gè)事務(wù)的消息。如果Bob比我們之前描述的更愚蠢,他可以在網(wǎng)站上完成結(jié)賬過(guò)程,并允許Alice在當(dāng)時(shí)下載軟件。這被稱為零確認(rèn)交易。這導(dǎo)致了比之前描述的更多更基本的雙重支付攻擊。以前,為了進(jìn)行雙重支付攻擊,我們不得不假設(shè)一個(gè)惡意參與者控制提議的下一個(gè)區(qū)塊的節(jié)點(diǎn)。但是如果Bob允許Alice在交易接收到區(qū)塊鏈上的單個(gè)確認(rèn)之前下載軟件,則Alice可以立即廣播雙重支付交易,而誠(chéng)實(shí)節(jié)點(diǎn)可能將其包含在下一個(gè)區(qū)塊中,而不是支付Bob的交易。

第2章:比特幣如何實(shí)現(xiàn)權(quán)力下放(去中心化)

圖2.3 Bob商人的觀點(diǎn) 這是Alice從Bob商人的角度看的雙重支付攻擊

為了保護(hù)自己免受此攻擊,Bob應(yīng)該等到Alice支付給他的交易包含在區(qū)塊鏈中,并且有幾個(gè)確認(rèn)后再交易。

另一方面,即使交易被包含在一個(gè)區(qū)塊中,一個(gè)謹(jǐn)慎的商人不會(huì)將該軟件發(fā)布給Alice,并將繼續(xù)等待。如果Bob看到Alice成功地發(fā)動(dòng)了雙重支付攻擊,他意識(shí)到包含Alice對(duì)他支付的那塊已經(jīng)被孤立了。他應(yīng)該放棄交易,不讓Alice下載軟件。相反,盡管發(fā)生了雙重支付攻擊這種情況,接下來(lái)的幾個(gè)節(jié)點(diǎn)將Alice→Bob的交易創(chuàng)建在區(qū)塊上,Bob將獲得這一交易將在長(zhǎng)期共識(shí)鏈上創(chuàng)建的信心。

一般來(lái)說(shuō),一個(gè)交易得到的確認(rèn)越多,就越有可能在長(zhǎng)期共識(shí)鏈上。回想一下,誠(chéng)實(shí)節(jié)點(diǎn)的行為總是擴(kuò)展它們看到的最長(zhǎng)的有效分支。包含雙重支付的較短分支趕上更長(zhǎng)分支的機(jī)會(huì)變得越來(lái)越小,因?yàn)殚L(zhǎng)分支比任何其他分支長(zhǎng)得多。如果只有少數(shù)節(jié)點(diǎn)是惡意的,這一點(diǎn)尤其如此——對(duì)于較短的分支要迎頭趕上,必須連續(xù)挑選幾個(gè)惡意節(jié)點(diǎn)。

事實(shí)上,雙重支付的概率隨著確認(rèn)的數(shù)量呈指數(shù)下降。那么,如果你感興趣的交易已經(jīng)收到K確認(rèn),那么雙重支付交易出現(xiàn)在長(zhǎng)期共識(shí)鏈上的概率指數(shù)下降為k的函數(shù)。在比特幣生態(tài)系統(tǒng)中使用的最常見(jiàn)的啟發(fā)式是等待六次確認(rèn)。數(shù)字六并沒(méi)有什么特別的。這僅僅是一個(gè)很好的,在你等待的時(shí)間和保證你感興趣的交易最終出現(xiàn)在共識(shí)區(qū)塊鏈上的折衷方案。

總而言之,防范無(wú)效的交易是完全加密的。但它是以共識(shí)的方式執(zhí)行的,這意味著如果一個(gè)節(jié)點(diǎn)嘗試包含一個(gè)加密無(wú)效的交易,則交易不會(huì)在長(zhǎng)期共識(shí)鏈中最終出現(xiàn)的唯一原因是因?yàn)榇蟛糠止?jié)點(diǎn)是誠(chéng)實(shí)的且不會(huì)將無(wú)效交易包含在區(qū)塊鏈中。另一方面,防止雙重支付也純粹是共識(shí)的。密碼學(xué)對(duì)此毫無(wú)意義,兩個(gè)代表雙重支付嘗試的交易從加密的角度來(lái)看都是有效的。但是,共識(shí)性決定了哪一個(gè)最終將在長(zhǎng)期共識(shí)鏈上。最后,你永遠(yuǎn)不會(huì)百分之百地確定你感興趣的交易是在共識(shí)分支上。但是,這個(gè)指數(shù)概率保證是相當(dāng)好的,經(jīng)過(guò)約六次交易,幾乎沒(méi)有出錯(cuò)的機(jī)會(huì)。

2.4獎(jiǎng)勵(lì)和工作證明

在上一節(jié)中,我們對(duì)Bitcoin的共識(shí)性算法進(jìn)行了基本的了解,并解釋了為什么我們相信它安全是一個(gè)很好的自覺(jué)。但從本章開(kāi)始的地方回想起來(lái),Bitcoin的分布化部分是技術(shù)性機(jī)制,部分是聰明的激勵(lì)工程。到目前為止,我們主要關(guān)注的是技術(shù)機(jī)制。現(xiàn)在讓我們談?wù)勗贐itcoin上發(fā)生的激勵(lì)工程。

我們要求你早日實(shí)現(xiàn)信念的飛躍在假設(shè)我們能夠選擇一個(gè)隨機(jī)節(jié)點(diǎn),也許更成問(wèn)題的是,至少有50%的時(shí)間,這個(gè)過(guò)程會(huì)挑選一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)。這種誠(chéng)實(shí)的假設(shè)是特別有問(wèn)題的,如果有資金鼓勵(lì)參與者顛覆這個(gè)過(guò)程,在這種情況下,我們不能真的假定一個(gè)節(jié)點(diǎn)將是誠(chéng)實(shí)的。那么問(wèn)題就變成了:我們能給節(jié)點(diǎn)一個(gè)誠(chéng)實(shí)行為的激勵(lì)嗎?

再次考慮確認(rèn)一次后的雙重支付攻擊(圖2.3)我們可以以某種方式懲罰創(chuàng)建包含雙重支付交易的節(jié)點(diǎn)嗎?嗯,這不是真的。正如我們前面提到的,很難知道哪個(gè)是道義上合法的交易。但即使我們這樣做了,由于沒(méi)有身份,仍然很難懲罰節(jié)點(diǎn)。所以反過(guò)來(lái),讓我們把問(wèn)題拋到一邊,問(wèn)我們可以獎(jiǎng)勵(lì)那些創(chuàng)建了長(zhǎng)期共識(shí)鏈最終區(qū)塊的節(jié)點(diǎn)嗎?那么,再一次,由于這些節(jié)點(diǎn)沒(méi)有透露他們的真實(shí)身份,我們不能把他們的現(xiàn)金郵寄到他們的家庭住址。如果有某種數(shù)字貨幣,我們可以用它來(lái)代替…你可能會(huì)看到這是怎么回事。我們將使用Bitcoin獎(jiǎng)勵(lì)創(chuàng)建了這些區(qū)塊的節(jié)點(diǎn)。

我們先暫停一會(huì)。我們迄今為止所描述的一切只是一種實(shí)現(xiàn)分布式共識(shí)的抽象算法,它并不是特定于哪個(gè)應(yīng)用。現(xiàn)在我們要突破這個(gè)模式,我們將使用這樣一個(gè)事實(shí),即我們通過(guò)這種分布式共識(shí)過(guò)程構(gòu)建的應(yīng)用實(shí)際上是一種貨幣。具體來(lái)說(shuō),我們將通過(guò)支付這種貨幣單位來(lái)鼓勵(lì)節(jié)點(diǎn)表現(xiàn)誠(chéng)實(shí)的態(tài)度。

區(qū)塊獎(jiǎng)勵(lì) 這怎么做?Bitcoin有兩種獨(dú)立的激勵(lì)機(jī)制。第一個(gè)是區(qū)塊獎(jiǎng)勵(lì)。根據(jù)Bitcoin的規(guī)則,創(chuàng)建區(qū)塊的節(jié)點(diǎn)將在該區(qū)塊中包含一個(gè)特殊交易。這個(gè)交易是一個(gè)硬幣創(chuàng)建交易,類似于Scroogecoin中的CreateCoins,節(jié)點(diǎn)也可以選擇此交易的收件人地址。當(dāng)然,該節(jié)點(diǎn)通常會(huì)選擇屬于自己的地址。你可以獎(jiǎng)此視為對(duì)節(jié)點(diǎn)的支付,以換取在共識(shí)鏈上創(chuàng)建區(qū)塊的服務(wù)。

在撰寫(xiě)本文時(shí),區(qū)塊獎(jiǎng)勵(lì)的價(jià)值固定為25Bitcoin。但實(shí)際上,每隔21萬(wàn)個(gè)區(qū)塊就減半。根據(jù)我們即將看到的區(qū)塊創(chuàng)建速度,這意味著大概每四年下降一次。我們現(xiàn)在處于第二個(gè)時(shí)期。Bitcoin存在的頭四年,區(qū)塊獎(jiǎng)勵(lì)的是50個(gè)Bitcoin,現(xiàn)在是25個(gè)。它將要保持減半的速率。我們很快就會(huì)看到,這有一些有趣的意義。

你可能想知道為什么區(qū)塊獎(jiǎng)勵(lì)誠(chéng)實(shí)的行為。根據(jù)我們迄今為止所說(shuō)的,可能會(huì)出現(xiàn)無(wú)論節(jié)點(diǎn)是提議有效的區(qū)塊還是惡意行為,這個(gè)節(jié)點(diǎn)都會(huì)獲得區(qū)塊獎(jiǎng)勵(lì)。但是,這是錯(cuò)誤的!想一想——這個(gè)節(jié)點(diǎn)怎么“收集”它的獎(jiǎng)勵(lì)?只有在有爭(zhēng)議的區(qū)塊結(jié)束于長(zhǎng)期共識(shí)分支的情況下才會(huì)發(fā)生這種情況,因?yàn)榫拖衿渌薪灰滓粯樱挥凶罱K達(dá)成共識(shí)鏈,硬幣創(chuàng)建的交易才會(huì)被其他節(jié)點(diǎn)接受。這是激勵(lì)機(jī)制背后的核心理念。這是一個(gè)非常微妙但異常強(qiáng)大的技巧。它激勵(lì)節(jié)點(diǎn)以任何他們認(rèn)為將獲得其他節(jié)點(diǎn)來(lái)擴(kuò)展它們的區(qū)塊的方式來(lái)表現(xiàn)(活動(dòng))。因此,如果大多數(shù)網(wǎng)絡(luò)遵循最長(zhǎng)的有效分支規(guī)則,則會(huì)激勵(lì)所有節(jié)點(diǎn)繼續(xù)遵循該規(guī)則。這是Bitcoin的第一個(gè)激勵(lì)機(jī)制。

我們提到,每隔21萬(wàn)個(gè)區(qū)塊(或大約四年),區(qū)塊獎(jiǎng)勵(lì)減半。在圖2.4中,該曲線的斜率要減半。這是一個(gè)幾何級(jí)數(shù),你可能知道它意味著有一個(gè)有限和。它計(jì)算出來(lái)共計(jì)2100萬(wàn)Bitcoin。

第2章:比特幣如何實(shí)現(xiàn)權(quán)力下放(去中心化)

圖2.4 區(qū)塊獎(jiǎng)勵(lì)每四年減半,將比特幣的總供應(yīng)量限制在2100萬(wàn)

值得注意的是,這是允許創(chuàng)建新比特幣的唯一途徑。沒(méi)有其他硬幣產(chǎn)生機(jī)制,這就是為什么2100萬(wàn)是有多少比特幣可以存在的一個(gè)最終和總數(shù)(至少按照現(xiàn)在的規(guī)則)。這個(gè)新的區(qū)塊創(chuàng)建獎(jiǎng)勵(lì)實(shí)際上將在2140年用完,就像現(xiàn)在一樣。這是否意味著系統(tǒng)將在2140年停止工作,變得不完全,因?yàn)楣?jié)點(diǎn)不再有誠(chéng)實(shí)行為的動(dòng)機(jī)?不完全是。區(qū)塊獎(jiǎng)勵(lì)只是比特幣的兩個(gè)激勵(lì)機(jī)制中的第一個(gè)。

交易費(fèi)用第二種激勵(lì)機(jī)制被稱為交易費(fèi)。任何交易的創(chuàng)建者都可以選擇使交易輸出的總值小于其輸入的總值。無(wú)論是誰(shuí)創(chuàng)建的區(qū)塊,首先將交易嵌入到區(qū)塊鏈中去收集差額,這將扮演交易費(fèi)用。所以,如果你是一個(gè)創(chuàng)建一個(gè)包含200個(gè)交易區(qū)塊的節(jié)點(diǎn),那么所有這200個(gè)交易費(fèi)用的總和將被支付給你放入該區(qū)塊的地址。交易費(fèi)純粹是自愿的,但我們預(yù)計(jì),根據(jù)對(duì)系統(tǒng)的了解,隨著區(qū)塊獎(jiǎng)勵(lì)開(kāi)始消耗殆盡,對(duì)于用戶來(lái)說(shuō),為了獲得合理的服務(wù)質(zhì)量,包含交易費(fèi)用將變得越來(lái)越重要,幾乎是強(qiáng)制性的。在一定程度上,這已經(jīng)開(kāi)始發(fā)生了。但目前尚不清楚系統(tǒng)將如何演變;這真的取決于很多還沒(méi)有完全解決的游戲理論。這是比特幣公開(kāi)研究的一個(gè)有趣的領(lǐng)域。

我們描述的共識(shí)機(jī)制仍然存在一些問(wèn)題。第一個(gè)主要的是信念的飛躍,我們要求你采取某種方式,使我們可以選擇一個(gè)隨機(jī)節(jié)點(diǎn)。第二,我們創(chuàng)造了一個(gè)新的問(wèn)題,讓節(jié)點(diǎn)參與這些激勵(lì)。該系統(tǒng)可能會(huì)變得不穩(wěn)定,因?yàn)榧?lì)導(dǎo)致對(duì)于所有人都能免費(fèi)地運(yùn)行比特幣節(jié)點(diǎn),每一個(gè)人都希望去運(yùn)行來(lái)捕獲這些獎(jiǎng)勵(lì)。第三個(gè)是一個(gè)更棘手的版本問(wèn)題,一個(gè)對(duì)手可能會(huì)創(chuàng)建大量的Sybil節(jié)點(diǎn)來(lái)嘗試顛覆共識(shí)過(guò)程。

采礦和工作證明事實(shí)證明,所有這些問(wèn)題都是相關(guān)的,所有這些問(wèn)題都有相同的解決方案,這就是所謂的工作證明。工作證明背后的關(guān)鍵思想是,我們通過(guò)選擇與資源成比例的節(jié)點(diǎn)來(lái)近似選擇隨機(jī)節(jié)點(diǎn),同時(shí)我們希望沒(méi)有人可以壟斷。例如,如果這個(gè)資源是計(jì)算能力,那么它就是一個(gè)工作系統(tǒng)證明。或者,它可能與貨幣的所有權(quán)成比例,這就是所謂的股權(quán)證明。雖然它不在比特幣中使用,但股權(quán)證明是一個(gè)合法的替代模型,它用于其他加密貨幣。我們將在第8章中看到關(guān)于股權(quán)證明和其他工作證明變體的更多信息。

回到工作證明。讓我們嘗試更好地了解根據(jù)計(jì)算能力按比例選擇節(jié)點(diǎn)的含義。理解這種情況的另一種方法是,我們?cè)试S節(jié)點(diǎn)通過(guò)使用其計(jì)算能力相互競(jìng)爭(zhēng),這將導(dǎo)致節(jié)點(diǎn)以該比例自動(dòng)選擇。另一種工作證明的觀點(diǎn)是,我們正在適度地創(chuàng)造新的身份。這對(duì)身份創(chuàng)造是一種征稅,因此對(duì)Sybil的攻擊也是一種負(fù)擔(dān)。 這可能看起來(lái)有點(diǎn)模糊,所以讓我們來(lái)看看Bitcoin中使用的工作系統(tǒng)證明的細(xì)節(jié),這應(yīng)該使事情變得更加清晰。

比特幣使用哈希謎題實(shí)現(xiàn)工作證明。為了創(chuàng)建一個(gè)區(qū)塊,建議該區(qū)塊的節(jié)點(diǎn)需要找到一個(gè)數(shù)字,或者是隨機(jī)數(shù),這樣當(dāng)你連接了隨機(jī)數(shù),先前的哈希和包含該區(qū)塊的交易列表,采用這整個(gè)字符串的哈希,那么哈希輸出應(yīng)該是一個(gè)數(shù)字,它落入一個(gè)相對(duì)于該哈希函數(shù)大得多的輸出空間的相當(dāng)小的目標(biāo)空間。我們可以將這樣的目標(biāo)空間定義為低于某個(gè)目標(biāo)值的任何值。在這種情況下,隨機(jī)數(shù)必須滿足以下不等式:

H(nonce || prev_hash || tx || tx || ... || tx)

正如我們前面看到的,通常一個(gè)區(qū)塊包含節(jié)點(diǎn)提出的一系列交易。另外,一個(gè)區(qū)塊還包含一個(gè)指向前一個(gè)區(qū)塊(我們松散地使用哈希指針術(shù)語(yǔ)。這個(gè)指針在這個(gè)上下文中只是一個(gè)字符串,因?yàn)樗恍枰嬖V我們?cè)谀睦镎业竭@個(gè)區(qū)塊。我們將通過(guò)向網(wǎng)絡(luò)上的其他對(duì)等端查詢?cè)搮^(qū)塊。重要的部分是在請(qǐng)求區(qū)塊的其他對(duì)等端時(shí)哈希作為一個(gè)ID,一旦我們獲得了該區(qū)塊,我們就可以驗(yàn)證該區(qū)塊)的哈希指針。此外,我們現(xiàn)在要求一個(gè)區(qū)塊也包含一個(gè)隨機(jī)數(shù)。這個(gè)想法是,我們希望適度難的找到滿足這個(gè)必須屬性的隨機(jī)數(shù),就是將整個(gè)區(qū)塊哈希在一起,包括該隨機(jī)數(shù),這將導(dǎo)致特定類型的輸出。如果哈希函數(shù)滿足第1章中的謎題友好的屬性,那么成功解決這個(gè)哈希謎題的唯一方法就是一個(gè)接一個(gè)地嘗試足夠多的隨機(jī)數(shù),直到你幸運(yùn)地得到它。具體地說(shuō),如果這個(gè)目標(biāo)空間只占整體輸出空間的百分之一,那么你必須在你得到幸運(yùn)之前嘗試100個(gè)隨機(jī)數(shù)。實(shí)際上,這個(gè)目標(biāo)空間的大小幾乎不到輸出空間的百分之一。它比我們稍后看到的要小得多。

這種哈希謎題和工作證明的概念完全不需要神奇地選擇一個(gè)隨機(jī)節(jié)點(diǎn)。相反,節(jié)點(diǎn)一直簡(jiǎn)單獨(dú)立地競(jìng)爭(zhēng),以解決這些散列謎題。有一段時(shí)間,其中一個(gè)節(jié)點(diǎn)將會(huì)幸運(yùn)地找到一個(gè)滿足這個(gè)屬性的隨機(jī)數(shù)。那個(gè)幸運(yùn)的節(jié)點(diǎn)隨后就提議下一個(gè)區(qū)塊。這就是系統(tǒng)完全分散化的原因。沒(méi)有人決定是哪個(gè)節(jié)點(diǎn)提議下一個(gè)區(qū)塊。

難以計(jì)算哈希謎題有三個(gè)重要的屬性。第一個(gè)是他們需要很難計(jì)算。我們說(shuō)適當(dāng)?shù)碾y度,你會(huì)明白為什么這個(gè)隨著時(shí)間會(huì)有所變化。截止2014年年底,每個(gè)區(qū)塊的難度級(jí)別為10個(gè)哈希。換句話說(shuō),目標(biāo)空間的大小只是哈希函數(shù)輸出空間大小的1/10。這是一個(gè)很大的計(jì)算量——例如,對(duì)于商用筆記本電腦來(lái)說(shuō),這是不可能的。因此,只有一些節(jié)點(diǎn)甚至勞神地在這個(gè)區(qū)塊創(chuàng)建過(guò)程中競(jìng)爭(zhēng)。這個(gè)反復(fù)嘗試和解決這些哈希謎題的過(guò)程被稱為比特幣挖礦,我們稱之為參與節(jié)點(diǎn)的礦工。盡管技術(shù)上任何人都可以稱為礦工,但由于采礦成本高,采礦生態(tài)系統(tǒng)中的權(quán)力很集中。

參數(shù)化成本第二個(gè)屬性是我們希望成本是可參數(shù)化的,而不是所有時(shí)間的固定成本。實(shí)現(xiàn)的方式是,比特幣對(duì)等網(wǎng)絡(luò)中的所有節(jié)點(diǎn)將自動(dòng)重新計(jì)算目標(biāo),即目標(biāo)空間的大小,作為每個(gè)2016塊的輸出空間的一小部分。他們重新計(jì)算目標(biāo),使得比特幣網(wǎng)絡(luò)中產(chǎn)生的連續(xù)區(qū)塊之間的平均時(shí)間約為10分鐘。平均間隔時(shí)間為10分鐘,2016塊區(qū)塊的工作時(shí)間為兩周。換句話說(shuō),目標(biāo)的重新計(jì)算大概每?jī)芍馨l(fā)生一次。

我們來(lái)想想這是什么意思。如果你是一個(gè)礦工,而且你已經(jīng)將一定數(shù)量的硬件投入比特幣礦業(yè),但整體采礦生態(tài)系統(tǒng)正在增長(zhǎng),更多的礦工正在進(jìn)軍,或者他們正在部署更快的硬件,這意味著在兩個(gè)星期的時(shí)間里,比預(yù)期的區(qū)塊要多一些。因此,節(jié)點(diǎn)將自動(dòng)重新調(diào)整目標(biāo),并且你能夠找到一個(gè)區(qū)塊需要做的工作量將會(huì)增加。所以如果你投入固定的硬件投資,你發(fā)現(xiàn)區(qū)塊的速度實(shí)際上取決于其他礦工在做什么。有一個(gè)非常好的公式來(lái)捕獲這一點(diǎn),這就是說(shuō),任何給定的礦工Alice將要贏得下一個(gè)區(qū)塊的概率相當(dāng)于她控制的全局哈希能力的百分比。這意味著如果Alice的采礦硬件占總哈希能力的大約百分之零點(diǎn)一,那么每1000個(gè)區(qū)塊中大約會(huì)有一個(gè)區(qū)塊被她發(fā)現(xiàn)。

這次調(diào)整的目的是什么?為什么要保持這個(gè)10分鐘的不變量?原因很簡(jiǎn)單。如果區(qū)塊之間的距離非常接近,那么會(huì)有很多低效率,我們將失去在一個(gè)區(qū)塊中放置大量交易的優(yōu)化優(yōu)勢(shì)。對(duì)于數(shù)字10,沒(méi)有什么神奇的,如果你想從10分鐘降到5分鐘,那可能會(huì)很好。有很多關(guān)于山寨幣或其他加密貨幣應(yīng)該具有的理想塊延遲有很多討論。但是,盡管對(duì)理想的延遲有一些分歧,但每個(gè)人都同意應(yīng)該是一個(gè)固定的數(shù)額。它不能被允許沒(méi)有限制的下降。這就是為什么我們有自動(dòng)目標(biāo)重新計(jì)算功能的原因。

這種成本函數(shù)和工作證明的設(shè)置方式使我們能夠重新構(gòu)建我們的安全假設(shè)。在這里,我們終于擺脫了我們要求你早些時(shí)候采取的最后的信念飛躍。而不是不知何故地說(shuō),大多數(shù)甚至沒(méi)有身份,也不清楚那意味著什么的節(jié)點(diǎn)在上下文中都是誠(chéng)實(shí)的,我們現(xiàn)在可以爽快地聲明,如果大多數(shù)礦工遵照協(xié)議或者誠(chéng)實(shí)的通過(guò)哈希加權(quán),比特幣的很多攻擊是不可行的。這是真的,因?yàn)槿绻蠖鄶?shù)被哈希加權(quán)的礦工都是誠(chéng)實(shí)的,則提議下一個(gè)區(qū)塊的競(jìng)爭(zhēng)將自動(dòng)確保至少有50%的機(jī)會(huì)在任何時(shí)候提出的下一個(gè)區(qū)塊來(lái)自一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)。

邊欄在分布式系統(tǒng)和計(jì)算機(jī)安全性的研究領(lǐng)域,通常假設(shè)有一定百分比的節(jié)點(diǎn)是誠(chéng)實(shí)的來(lái)表明系統(tǒng)的工作原理,即使其他節(jié)點(diǎn)的行為是任意的。這基本上是我們?cè)谶@里所采取的方法,除了我們通過(guò)哈希加權(quán)計(jì)算節(jié)點(diǎn)的多數(shù)。原始的比特幣白皮書(shū)對(duì)這種類型也有分析。

但博弈論領(lǐng)域提供了一個(gè)完全不同的,可以說(shuō)是更為復(fù)雜,更為現(xiàn)實(shí)的方式來(lái)確定系統(tǒng)的行為方式。在這種觀點(diǎn)下,我們不會(huì)講節(jié)點(diǎn)分解為誠(chéng)實(shí)的和惡意的。相反,我們假設(shè)每個(gè)節(jié)點(diǎn)根據(jù)它的獎(jiǎng)勵(lì)來(lái)行動(dòng)。每個(gè)節(jié)點(diǎn)選擇一個(gè)(隨機(jī))策略以最大化其收益,同時(shí)考慮到其他節(jié)點(diǎn)的潛在策略。如果協(xié)議和激勵(lì)設(shè)計(jì)的很好,那么大多數(shù)節(jié)點(diǎn)絕大多數(shù)時(shí)候都遵循這些規(guī)則。“誠(chéng)實(shí)”的行為只是許多人的一個(gè)策略,我們沒(méi)有特別的道德觀念。

在博弈論的觀點(diǎn)中,最大的問(wèn)題是默認(rèn)的礦工行為是否是“納什均衡”,也就是說(shuō),它是否代表了一個(gè)穩(wěn)定的情況,即礦工不能通過(guò)偏離誠(chéng)實(shí)的行為來(lái)實(shí)現(xiàn)最高的回報(bào)。這個(gè)問(wèn)題仍然是存有爭(zhēng)議的,也是一個(gè)積極的研究領(lǐng)域。

解決哈希謎題是概率性的,因?yàn)闆](méi)有人可以預(yù)測(cè)哪個(gè)隨機(jī)數(shù)能解決哈希謎題。唯一的辦法是一個(gè)接一個(gè)地嘗試隨機(jī)數(shù),希望一個(gè)能成功。在數(shù)學(xué)上,這個(gè)過(guò)程被稱為伯努利試驗(yàn)。伯努利試驗(yàn)是一個(gè)具有兩個(gè)可能結(jié)果的實(shí)驗(yàn),每個(gè)結(jié)果發(fā)生的概率在連續(xù)試驗(yàn)中是固定的。這里,兩個(gè)輸出結(jié)果就是哈希是否落在目標(biāo)中,并假定哈希函數(shù)的行為像一個(gè)隨機(jī)函數(shù),這些輸出結(jié)果的概率是固定的。通常,節(jié)點(diǎn)嘗試伯努利試驗(yàn)的許多隨機(jī)數(shù),一個(gè)離散的概率過(guò)程,可以很好地被連續(xù)概率過(guò)程近似地稱為泊松過(guò)程,過(guò)程中所發(fā)生的事件以恒定的平均速率獨(dú)立發(fā)生。所有這些的最終結(jié)果是,顯示找到下一個(gè)區(qū)塊的時(shí)間的相對(duì)可能性的概率密度函數(shù)如圖2.5所示。

第2章:比特幣如何實(shí)現(xiàn)權(quán)力下放(去中心化)

圖2.5發(fā)現(xiàn)下一個(gè)區(qū)塊的時(shí)間的概率密度函數(shù)

這被稱為指數(shù)分布。有一個(gè)很小的可能性,如果一個(gè)區(qū)塊現(xiàn)在被發(fā)現(xiàn),下一個(gè)區(qū)塊將在幾秒鐘或一分鐘之內(nèi)被發(fā)現(xiàn)。而且還有一些很小的可能性,要花一個(gè)較長(zhǎng)的時(shí)間,比如說(shuō)一個(gè)小時(shí),才能找到下一個(gè)區(qū)塊。但總的來(lái)說(shuō),網(wǎng)絡(luò)會(huì)自動(dòng)調(diào)整難度,以便區(qū)塊的間隔時(shí)間長(zhǎng)期維持在一個(gè)平均時(shí)間——10分鐘。請(qǐng)注意,圖2.5顯示了整個(gè)網(wǎng)絡(luò)創(chuàng)建區(qū)塊的頻率,不關(guān)心哪個(gè)礦工真正找到區(qū)塊。

如果你是一個(gè)礦工,你可能對(duì)花多長(zhǎng)時(shí)間才能找到一個(gè)區(qū)塊感興趣。這個(gè)概率密度函數(shù)是怎么樣的?它將具有相同的形狀,但它只是在x軸上將具有不同的刻度。再次,它可以用一個(gè)很好的方程表示。

對(duì)于特定的礦工:

第2章:比特幣如何實(shí)現(xiàn)權(quán)力下放(去中心化)

如果你擁有全網(wǎng)絡(luò)0.1%的哈希能力,這個(gè)方程式告訴我們,你將每隔10000分鐘找到一個(gè)區(qū)塊,這只需要一個(gè)星期。不僅你們之間區(qū)塊的平均時(shí)間是非常高的,而且你發(fā)現(xiàn)的區(qū)塊之間的時(shí)間差異也將非常高。這有一些重要的后果,我們將在第5章中看到。

簡(jiǎn)單的驗(yàn)證

現(xiàn)在讓我們看看這個(gè)工作證明函數(shù)的第三個(gè)重要屬性,即驗(yàn)證一個(gè)節(jié)點(diǎn)是否正確計(jì)算了工作證明是微不足道的。即使它需要一個(gè)節(jié)點(diǎn),平均來(lái)說(shuō),10嘗試找到一個(gè)使區(qū)塊哈希落在目標(biāo)下的隨機(jī)數(shù),該隨機(jī)數(shù)必須作為區(qū)塊的一部分發(fā)布。因此,任何其他節(jié)點(diǎn)都可以查看區(qū)塊內(nèi)容,將它們?nèi)抗T谝黄穑Ⅱ?yàn)證輸出是否小于目標(biāo)。這是一個(gè)相當(dāng)重要的財(cái)產(chǎn),因?yàn)樗俅卧试S我們擺脫集權(quán)。我們不需要任何集中的權(quán)力來(lái)驗(yàn)證礦工正在做正確的工作。任何節(jié)點(diǎn)或任何礦工都可以立即驗(yàn)證另一個(gè)礦工發(fā)現(xiàn)的區(qū)塊是否符合工作性能證明。

2.5把一切放在一起

開(kāi)采成本現(xiàn)在讓我們來(lái)看看礦業(yè)經(jīng)濟(jì)學(xué)。我們提到作為一個(gè)礦工經(jīng)營(yíng)相當(dāng)昂貴。在目前的困難水平上,找到一個(gè)單獨(dú)的區(qū)塊需要大約10個(gè)哈希的計(jì)算能力,區(qū)塊獎(jiǎng)勵(lì)大約是25比特幣,這在當(dāng)前的匯率下是一筆可觀的金額。這些數(shù)字可以輕松計(jì)算一個(gè)人是否有利可圖,我們可以用簡(jiǎn)單的語(yǔ)句來(lái)獲得這個(gè)決定:

假如

挖礦獎(jiǎng)勵(lì)>挖礦成本

礦工盈利

當(dāng)

挖礦獎(jiǎng)勵(lì)=區(qū)塊獎(jiǎng)勵(lì) 交易費(fèi)用

挖礦成本=硬件投入 運(yùn)營(yíng)成本(電力,冷卻,等等.)

從根本上來(lái)說(shuō),礦工獲得的礦業(yè)獎(jiǎng)勵(lì)是按照區(qū)塊獎(jiǎng)勵(lì)和交易費(fèi)來(lái)計(jì)算的。礦工問(wèn)自己如何與總支出(硬件和電費(fèi))進(jìn)行比較。

但是,這個(gè)簡(jiǎn)單方程式有一些復(fù)雜。首先,你可能已經(jīng)注意到,硬件成本是固定成本,而電費(fèi)是隨時(shí)間推移的可變成本。另一個(gè)復(fù)雜的因素是,礦工獲得的獎(jiǎng)勵(lì)取決于他們發(fā)現(xiàn)區(qū)塊的速率,這不僅取決于硬件的能力,還取決于他們的哈希率與全局哈希率的比值。第三個(gè)復(fù)雜因素是,礦工的成本通常以美元或其他傳統(tǒng)貨幣計(jì)價(jià),但他們的報(bào)酬是用比特幣計(jì)算的。所以這個(gè)方程在任何給定的時(shí)間都有比特幣匯率的隱藏依賴。最后,到目前為止,我們假設(shè)礦工有興趣誠(chéng)實(shí)地遵守協(xié)議。但礦工可能會(huì)選擇使用其他一些采礦策略,而不是總是試圖延長(zhǎng)最長(zhǎng)的有效分支。所以這個(gè)方程式并沒(méi)有抓住礦工可以采用的不同策略的所有細(xì)微差別。實(shí)際上,分析它是否有意義的是一個(gè)不容易回答的復(fù)雜的博弈論問(wèn)題。

在這一點(diǎn)上,我們已經(jīng)很好地理解了比特幣是如何實(shí)現(xiàn)分散化的。現(xiàn)在我們將再回顧一下高層次的觀點(diǎn),把它們放在一起,以便更好的理解。

讓我們從身份開(kāi)始吧。據(jù)我們所知,參與比特幣協(xié)議并不需要現(xiàn)實(shí)世界的身份。任何用戶都可以隨時(shí)創(chuàng)建任意數(shù)量的假名密鑰對(duì)。當(dāng)Alice想在比特幣中支付Bob時(shí),比特幣協(xié)議并未提及Alice如何得知Bob的地址。給定這些假名密鑰對(duì)以身份,交易基本上是廣播到比特幣對(duì)等網(wǎng)絡(luò)的消息,這些消息是將硬幣從一個(gè)地址傳送到另一個(gè)地址的指令。比特幣只是交易輸出,我們將在下一章中更詳細(xì)地討論這一點(diǎn)。

邊欄比特幣沒(méi)有像美元這樣的固定面額,特別是沒(méi)有“1比特幣”的特殊名稱。比特幣只是交易輸出,而在當(dāng)前的規(guī)則中,它們可以具有8位小數(shù)位精度的任意值。最小可能值為0.00000001BTC(比特幣),稱為1中本聰。

比特幣對(duì)等網(wǎng)絡(luò)的目標(biāo)是將所有新交易和新區(qū)塊傳播到所有比特幣對(duì)等節(jié)點(diǎn)。但是網(wǎng)絡(luò)是非常不完善的,并且盡最大努力來(lái)傳遞這些信息。系統(tǒng)的安全性不是來(lái)自于對(duì)等網(wǎng)絡(luò)的完善。相反,安全來(lái)自于本章大部分章節(jié)研究的區(qū)塊鏈和共識(shí)協(xié)議。

當(dāng)我們說(shuō)一個(gè)交易被包含在區(qū)塊鏈中時(shí),我們真正的意思是交易已經(jīng)取得了大量的確認(rèn)。在我們充分相信其包含之前,沒(méi)有固定的數(shù)字來(lái)定義需要多少確認(rèn)是必要的,但是六個(gè)是一種常用的啟發(fā)式。交易獲得的確認(rèn)越多,你可以更確定此交易是共識(shí)鏈的一部分。經(jīng)常會(huì)有孤兒區(qū)塊或區(qū)塊不能進(jìn)入共識(shí)鏈。有各種各樣的原因可能導(dǎo)致區(qū)塊成為孤兒區(qū)塊。該區(qū)塊可能包含無(wú)效的交易或雙重支付的嘗試。它也可能只是網(wǎng)絡(luò)延遲的結(jié)果。也就是說(shuō),兩個(gè)礦工可能只相差幾秒鐘之內(nèi)找到新的區(qū)塊。所以這兩個(gè)區(qū)塊幾乎同時(shí)廣播到網(wǎng)絡(luò)上,其中一個(gè)將不可避免地被孤立。

最后,我們看看哈希謎題和挖礦。礦工是特殊類型的節(jié)點(diǎn),他們決定在這場(chǎng)創(chuàng)建新區(qū)塊的游戲中競(jìng)爭(zhēng)。只要其他礦工建立在他們的區(qū)塊上,他們就會(huì)獲得新造幣比特幣(新區(qū)塊獎(jiǎng)勵(lì))和現(xiàn)有比特幣(交易費(fèi))的獎(jiǎng)勵(lì)。一個(gè)微妙但至關(guān)重要的一點(diǎn):說(shuō)Alice和Bob是兩個(gè)不同的礦工,Alice的計(jì)算能力是Bob的100倍。這并不意味著Alice將永遠(yuǎn)贏得比賽,找到下一個(gè)區(qū)塊。相反,Alice和Bob找到下一個(gè)塊的概率,基本符合100比1的比例。從長(zhǎng)遠(yuǎn)來(lái)看,Bob平均發(fā)現(xiàn)區(qū)塊的數(shù)量是Alice的百分之一。

我們預(yù)計(jì)礦工通常會(huì)處于靠近經(jīng)濟(jì)均衡的地步,在這個(gè)意思上,它們?cè)谟布碗娏Ψ矫娴闹С龃笾碌扔谒麄儷@得的回報(bào)。原因是如果礦工一直虧損,她可能會(huì)停止采礦。另一方面,對(duì)比采礦硬件和電力成本,如果采礦非常有利可圖,則采礦硬件將進(jìn)入網(wǎng)絡(luò)。哈希率的增加將導(dǎo)致難度增加,每個(gè)礦工的預(yù)期獎(jiǎng)勵(lì)將會(huì)下降。

這種分布式共識(shí)的概念滲透到比特幣相當(dāng)深層次。在傳統(tǒng)貨幣中,共識(shí)確實(shí)在一定程度上發(fā)揮作用。具體來(lái)說(shuō),由一個(gè)共識(shí)程序決定了貨幣的匯率。在比特幣的世界也是如此;我們需要對(duì)比特幣的價(jià)值達(dá)成共識(shí)。但是在比特幣方面,另外,我們需要對(duì)分類賬的狀態(tài)達(dá)成共識(shí),這就是靠區(qū)塊鏈來(lái)實(shí)現(xiàn)的。換句話說(shuō),即使你擁有再多比特幣賬戶,也要達(dá)成共識(shí)。當(dāng)我們說(shuō)Alice擁有一定數(shù)額或數(shù)量的比特幣時(shí),我們實(shí)際上意味著,在比特幣對(duì)等網(wǎng)絡(luò),如在區(qū)塊鏈中記錄的那樣,考慮所有Alice地址擁有比特幣數(shù)量的總和。這是比特幣真實(shí)性的本質(zhì):比特幣的所有權(quán)只不過(guò)是其他節(jié)點(diǎn)同意給定的一方擁有這些比特幣。

最后,我們需要對(duì)系統(tǒng)的規(guī)則達(dá)成共識(shí),因?yàn)榕紶枺到y(tǒng)的規(guī)則必須改變。比特幣的規(guī)則有兩種類型的變化,分別被稱為軟叉和硬叉。我們將把這些差異的討論推遲到后面的章節(jié),我們將詳細(xì)討論這些差異。

獲取一個(gè)加密的外來(lái)物品。另一個(gè)微妙的概念是引導(dǎo)。比特幣的三個(gè)不同想法之間存在棘手的相互作用:區(qū)塊鏈的安全性,采礦生態(tài)系統(tǒng)的健康狀況以及貨幣的價(jià)值。我們顯然希望區(qū)塊鏈可以保證比特幣成為一種可行的貨幣。為了使區(qū)塊鏈得到安全,對(duì)手必須無(wú)法壓倒共識(shí)程序。這反過(guò)來(lái)意味著對(duì)手不能創(chuàng)建大量的采礦節(jié)點(diǎn),占據(jù)新區(qū)塊創(chuàng)建的50%或更多。

但是什么時(shí)候會(huì)實(shí)現(xiàn)呢?一個(gè)先決條件是擁有一個(gè)健康的采礦生態(tài)系統(tǒng),由大量誠(chéng)實(shí)的協(xié)議跟隨節(jié)點(diǎn)組成。但是,這是一個(gè)前提條件——我們什么時(shí)候可以確定很多礦工會(huì)把很多的計(jì)算能力投入到這個(gè)解決哈希謎題的競(jìng)爭(zhēng)中呢?那么,如果比特幣的匯率相當(dāng)高,那么他們只可能這樣做,因?yàn)樗麄兪盏降幕貓?bào)是以比特幣計(jì)算的,而他們的支出則是美元。因此,貨幣的價(jià)值越高,這些礦工的競(jìng)爭(zhēng)將會(huì)越激烈。

但是什么能確保貨幣的高價(jià)值和穩(wěn)定的價(jià)值呢?這只有在一般用戶都信任區(qū)塊鏈的安全性的情況下才會(huì)發(fā)生。如果他們認(rèn)為網(wǎng)絡(luò)可能在任何時(shí)候被攻擊者淹沒(méi),那么比特幣作為貨幣就不會(huì)有很大的價(jià)值。所以在區(qū)塊鏈的安全性,健康的采礦生態(tài)系統(tǒng)和匯率之間有這種互相依賴、相互依存的關(guān)系。

由于這種三向依賴的自然循環(huán),每一種的存在取決于其他方面的存在。當(dāng)比特幣第一次被創(chuàng)造時(shí),這三個(gè)都不存在。除了Nakamoto自己經(jīng)營(yíng)采礦軟件之外,沒(méi)有其他礦工。比特幣作為一種貨幣沒(méi)有很多價(jià)值。事實(shí)上,這個(gè)區(qū)塊鏈?zhǔn)遣话踩模驗(yàn)闆](méi)有大量的采礦工作,任何人都可以輕而易舉地完成這個(gè)過(guò)程。

比特幣是如何從沒(méi)有任何這些屬性到擁有所有的三個(gè)的,這沒(méi)有一個(gè)簡(jiǎn)單的解釋。媒體的關(guān)注是故事的一部分——越多人聽(tīng)到比特幣,他們對(duì)采礦的興趣就越大。他們對(duì)采礦越感興趣,人們對(duì)區(qū)塊鏈的安全性就越有信心,因?yàn)楝F(xiàn)在有更多的采礦活動(dòng)在進(jìn)行,等等。順便說(shuō)一句,每個(gè)想要成功的新的Altcoin也都必須以某種方式來(lái)解決這個(gè)由自舉引起的問(wèn)題。

51%的攻擊最后,讓我們考慮一下如果共識(shí)失敗會(huì)發(fā)生什么,比如,實(shí)際上51%的攻擊者控制了Bitcoin網(wǎng)絡(luò)中的51%或以上的采礦能力。我們會(huì)考慮各種可能的攻擊,看看這些攻擊者實(shí)際上可以執(zhí)行哪些攻擊。

首先,這個(gè)攻擊者可以從現(xiàn)有的地址竊取硬幣嗎?你可能已經(jīng)猜到了,答案是否定的,因?yàn)槌悄泐嵏擦思用芗夹g(shù),否則從現(xiàn)有的地址竊取是不可能的。僅僅顛覆共識(shí)進(jìn)程是不夠的。這并不完全明顯。假設(shè)51%的攻擊者創(chuàng)建一個(gè)無(wú)效的區(qū)塊,它包含一個(gè)無(wú)效的交易,代表從攻擊者不會(huì)控制的現(xiàn)有地址中竊取Bitcoins,并將其轉(zhuǎn)移到自己的地址。攻擊者可以假裝這是一個(gè)有效的交易,并繼續(xù)在這個(gè)區(qū)塊上建立新的區(qū)塊。攻擊者甚至可以成功地使其成為最長(zhǎng)的分支。但是其他誠(chéng)實(shí)的節(jié)點(diǎn)根本不會(huì)接受這個(gè)無(wú)效交易的區(qū)塊,并且將繼續(xù)基于他們?cè)诰W(wǎng)絡(luò)中找到的最后一個(gè)有效區(qū)塊進(jìn)行挖掘。那么,將會(huì)發(fā)生的是,出現(xiàn)我們稱之為鏈中的分叉。

現(xiàn)在,從攻擊者試圖花費(fèi)這些無(wú)效硬幣的角度來(lái)想象這一點(diǎn),并將其發(fā)送給一些商人比如Bob作為某些商品或服務(wù)的支付方式。Bob自己可能運(yùn)行一個(gè)比特幣節(jié)點(diǎn),它將是一個(gè)誠(chéng)實(shí)的節(jié)點(diǎn)。Bob的節(jié)點(diǎn)將拒絕該分支并將其視為無(wú)效,因?yàn)樗瑹o(wú)效的交易。它是無(wú)效的,因?yàn)楹灻麤](méi)有簽出。所以Bob的節(jié)點(diǎn)將簡(jiǎn)單地忽略最長(zhǎng)的分支,因?yàn)樗且粋€(gè)無(wú)效的分支。因此,顛覆共識(shí)是不夠的。你必須顛覆加密技術(shù)來(lái)竊取比特幣。所以我們得出結(jié)論,51%的攻擊者進(jìn)行這個(gè)攻擊是不可能的。

我們應(yīng)該注意,這只是一個(gè)思想實(shí)驗(yàn)。實(shí)際上,如果有51%的攻擊跡象,可能會(huì)發(fā)生的情況是開(kāi)發(fā)人員會(huì)注意到這一點(diǎn),并作出反應(yīng)。他們將更新Bitcoin軟件,我們可能期望系統(tǒng)的規(guī)則(包括對(duì)等網(wǎng)絡(luò))可能以某種形式發(fā)生變化,從而使此攻擊更難成功。但我們不能很好的進(jìn)行預(yù)測(cè)。所以我們?cè)谝粋€(gè)發(fā)生了51%的攻擊的簡(jiǎn)化模型中工作,但除此之外,系統(tǒng)的規(guī)則沒(méi)有任何變化或調(diào)整。

讓我們考慮另一次攻擊。51%的攻擊者可以抑制一些交易嗎?假設(shè)有一些用戶,卡羅爾,攻擊者真的不喜歡他。攻擊者知道卡羅爾的一些地址,并希望確保這些地址中的任何一個(gè)硬幣都不可能花費(fèi)掉。那可能嗎?由于他控制了區(qū)塊鏈的共識(shí)過(guò)程,攻擊者可以簡(jiǎn)單地拒絕創(chuàng)建任何包含卡羅爾地址的交易的新區(qū)塊。攻擊者可以進(jìn)一步拒絕創(chuàng)建基于包含這些事務(wù)的區(qū)塊。然而,他不能阻止這些交易被廣播到對(duì)等網(wǎng)絡(luò),因?yàn)榫W(wǎng)絡(luò)不依賴于區(qū)塊鏈或共識(shí),我們假設(shè)攻擊者并沒(méi)有完全控制網(wǎng)絡(luò)。攻擊者無(wú)法阻止交易到達(dá)大多數(shù)節(jié)點(diǎn),因此即使攻擊成功,至少攻擊正在發(fā)生也很明顯。

攻擊者可以改變塊獎(jiǎng)勵(lì)嗎?也就是說(shuō),攻擊者可以開(kāi)始假裝進(jìn)行區(qū)塊獎(jiǎng)勵(lì),而不是25比特幣,說(shuō)100比特幣?這是對(duì)系統(tǒng)規(guī)則的更改,并且因?yàn)楣粽卟荒芸刂扑姓\(chéng)實(shí)節(jié)點(diǎn)正在運(yùn)行的Bitcoin軟件的副本,這也是不可能的。這類似于攻擊者不能包括無(wú)效交易的原因。其他節(jié)點(diǎn)根本無(wú)法識(shí)別區(qū)塊獎(jiǎng)勵(lì)的增加,因此攻擊者將無(wú)法使用它們。

最后,攻擊者能否以某種方式破壞比特幣的信心?好吧,我們來(lái)想象會(huì)發(fā)生什么。如果存在各種各樣的雙重支付嘗試,即節(jié)點(diǎn)沒(méi)有擴(kuò)展最長(zhǎng)有效分支,以及其他嘗試攻擊的情況,那么人們可能會(huì)決定,比特幣不再作為他們可以信任的分散分類帳。人們將會(huì)對(duì)貨幣失去信心,我們預(yù)計(jì)比特幣的匯率將會(huì)暴跌。事實(shí)上,如果單單知道有一個(gè)控制51%哈希能力的組織,那么即使攻擊者不一定要試圖發(fā)動(dòng)任何攻擊,人們也可能失去對(duì)比特幣的信心。所以這不僅是可能的,但實(shí)際上可能的是,任何一個(gè)51%的攻擊者都會(huì)摧毀對(duì)貨幣的信心。事實(shí)上,如果51%的襲擊能夠?qū)崿F(xiàn),這將是主要的實(shí)際威脅。考慮到對(duì)手必須投入支出攻擊比特幣并實(shí)現(xiàn)51%的大多數(shù),我們所描述的其他攻擊沒(méi)有一個(gè)從財(cái)務(wù)角度來(lái)看是真的有意義的。

希望在這一點(diǎn)上,你已經(jīng)真正了解Bitcoin如何實(shí)現(xiàn)分權(quán)化。你應(yīng)該對(duì)Bitcoin中的身份如何工作,交易如何傳播和驗(yàn)證,P2P對(duì)等網(wǎng)絡(luò)在比特幣中的作用,如何使用區(qū)塊鏈來(lái)實(shí)現(xiàn)共識(shí)以及如何解決哈希謎題和挖掘工作有一個(gè)很好的指導(dǎo)。這些概念為理解比特幣的更細(xì)微細(xì)節(jié)和細(xì)微差別提供了堅(jiān)實(shí)的基礎(chǔ)和良好的啟發(fā)點(diǎn),我們將在下一章中看到。

區(qū)塊 節(jié)點(diǎn) 比特幣 交易 共識(shí)
分享到:

1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來(lái)源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來(lái)源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。


專題報(bào)道