區(qū)塊鏈分區(qū)、縮放、復(fù)制和分片概念解析
在以前的文章中, 我們看到了一個(gè)簡(jiǎn)單的鏈表概念如何演變?yōu)閺?fù)雜的分布式系統(tǒng)。顯然,這是區(qū)塊鏈簡(jiǎn)單的概念演進(jìn),但它不是分布式系統(tǒng)出現(xiàn)的唯一方式。分布式系統(tǒng)需要協(xié)調(diào)、容錯(cuò)、協(xié)商一致和多層技術(shù)管理(在系統(tǒng)和協(xié)議的意義上)。
分布式系統(tǒng)還有許多其他復(fù)雜的問(wèn)題。當(dāng)分布式系統(tǒng)中的節(jié)點(diǎn)也是分散的(從所有權(quán)和控制的角度來(lái)看)時(shí),安全性就變得至關(guān)重要。這就是復(fù)雜密碼機(jī)制發(fā)揮作用的地方。巨大的事務(wù)量使得有必要處理任何共享或復(fù)制數(shù)據(jù)的性能,從而為擴(kuò)展、分片和驗(yàn)證分布式數(shù)據(jù)的概念鋪平了道路,以確保它不會(huì)失去同步 功能或受到損害。在本節(jié)中,我們將討論一下并不新鮮的蓋簾;它們已經(jīng)為人所知,并且已經(jīng)研究了幾十年。
密碼學(xué)
分布式系統(tǒng)中的一個(gè)重要需求是數(shù)據(jù)和參與者的安全性。這促使了密碼技術(shù)的引入。例如,Ralph Merkle在1979年引入了哈希值二叉樹(shù)(現(xiàn)在稱為Merkle樹(shù))的概念。塊的加密哈希值是由Stuart Haber & W. Scott Stornetta在1991年實(shí)現(xiàn)的。1992年,他們將Merkle樹(shù)納入他們的效率方案中。
哈希值函數(shù)是經(jīng)過(guò)充分研究的標(biāo)準(zhǔn)技術(shù),為許多現(xiàn)代加密技術(shù)提供了基礎(chǔ),包括眾所周知的SSL證書和http協(xié)議。在SHA-1和SHA-2中使用了Merkle哈希值函數(shù),現(xiàn)在稱為merker - damgard構(gòu)造。Hashcash使用SHA-1(1993年最初使用SHA-0, 1995年使用SHA-1),現(xiàn)在使用更安全的SHA-2(實(shí)際上由SHA-256和SHA-512組成)。更安全的SHA-3是下一步升級(jí)。
分區(qū)、縮放、復(fù)制和分片
由于區(qū)塊鏈的核心是分布式分類賬形式的數(shù)據(jù)庫(kù),如何處理數(shù)據(jù)庫(kù)規(guī)??焖僭鲩L(zhǎng)的問(wèn)題變得越來(lái)越緊迫。分區(qū)、復(fù)制、縮放和分片都是密切相關(guān)的概念。這些技術(shù)過(guò)去用于企業(yè)系統(tǒng),現(xiàn)在被用于區(qū)塊鏈以解決性能限制。
和區(qū)塊鏈一樣,這些也不是什么新概念,因?yàn)榇蠊編资陙?lái)一直在努力解決這些問(wèn)題。對(duì)于不斷增長(zhǎng)的數(shù)據(jù)庫(kù)來(lái)說(shuō),直觀而明顯的解決方案是將其分解為多個(gè)部分,并分別存儲(chǔ)這些部分。在這個(gè)看似簡(jiǎn)單的解決方案的背后,隱藏著許多技術(shù)挑戰(zhàn),例如,應(yīng)用層如何知道將在哪個(gè)“塊”找到任何特定的數(shù)據(jù)記錄,如何在數(shù)據(jù)的多個(gè)分區(qū)之間管理查詢,等等。雖然這些可伸縮性問(wèn)題在企業(yè)系統(tǒng)或已經(jīng)知道并允許參與者的生態(tài)系統(tǒng)(例如,相當(dāng)于被許可的塊鏈)中易于處理,但在公共區(qū)塊鏈中會(huì)變得更加棘手。惡意策略的排列似乎沒(méi)完沒(méi)了,而實(shí)際上也不可能事先列舉出來(lái)。需要保持合理的匿名性也增加了其解決方案的復(fù)雜性。
驗(yàn)證和確認(rèn)
零知識(shí)證明(ZKP)是一種技術(shù),用來(lái)證明驗(yàn)證者(另一方,稱為驗(yàn)證者),而驗(yàn)證者知道的一些東西,不需要證明者披露什么是驗(yàn)證者所知道的。(這聽(tīng)起來(lái)很神奇,但是有許多簡(jiǎn)單的例子可以說(shuō)明這是如何實(shí)現(xiàn)的,我將在稍后的文章中介紹。)ZKP最初是在Shafi Goldwasser、Silvio Micali和Charles Rackoff于1985年發(fā)表的論文《交互驗(yàn)證系統(tǒng)的知識(shí)復(fù)雜性》中描述的(顯然,ZKP早在1982年的時(shí)候就開(kāi)發(fā)出來(lái)了,但直到1985年才發(fā)表)。Zcash是一種基于比特幣的加密貨幣,它使用ZKP(或稱為zknoks的變體,由四名研究人員于2012年首次引入)來(lái)確保交易的有效性,同時(shí)不泄露任何關(guān)于發(fā)送方、接收方或金額本身的信息。
甚至交易本身都可以通過(guò)自動(dòng)化代碼實(shí)現(xiàn),這通常稱為智能合約。這是Nick Szabo在1996年首次提出的。盡管名稱不同,但考慮到人工智能目前相對(duì)先進(jìn)的狀態(tài),這些自動(dòng)化代碼是否可以說(shuō)是智能合約還存在爭(zhēng)議。同樣,智能合約也不完全是法律意義上的合同。例如,信用卡交易結(jié)合了大量的計(jì)算,包括檢查余額、欺詐、不尋常的支出模式等,以及在復(fù)雜的現(xiàn)代金融交易網(wǎng)絡(luò)中各方之間的服務(wù)水平協(xié)議和合約綁定,但我們通常不稱之為“智能合約”。相比之下,當(dāng)前的“智能合約”是相當(dāng)簡(jiǎn)單的。