区块链基础设施纵览:基本框架原则——揭示存储、计算和通信元素
http://www.infoq.com/cn/articles/blockchain-infrastructure-landscape
以太坊、IPFS/Filecoin和BigchainDB之間是怎樣的關(guān)系?Golem、Polkadot或Interledger又是什么情況?我經(jīng)常被問到諸如此類的問題,所以決定寫下這篇文章,從基本框架層面回答這些問題。
簡單來說:并不存在名為“區(qū)塊鏈”的無所不能的神奇系統(tǒng)。相比之下,倒是有很多優(yōu)秀的計(jì)算構(gòu)件塊,可以組合起來創(chuàng)建實(shí)用的去中心化應(yīng)用。以太坊可以充當(dāng)此類角色,此外還有很多類似的選擇。接下來具體分析。
背景
構(gòu)成計(jì)算技術(shù)的基本元素是存儲(chǔ)、處理和通信。大型主機(jī)、PC、移動(dòng)設(shè)備和云服務(wù)都以各自的方式展現(xiàn)這些元素。各個(gè)元素之內(nèi)還有專門的構(gòu)件塊來分配資源。
例如,在存儲(chǔ)元素內(nèi),既有文件系統(tǒng)也有數(shù)據(jù)庫。文件系統(tǒng)使用目錄文件的層級(jí)結(jié)構(gòu)存放mp3這樣的blob(二進(jìn)制大對(duì)象)數(shù)據(jù),而數(shù)據(jù)庫用來存放結(jié)構(gòu)化的元數(shù)據(jù),使用SQL[1]這樣的查詢接口。在中心化的云平臺(tái)上,我們可能使用Amazon S3服務(wù)存放文件,用MongoDB Atlas運(yùn)行數(shù)據(jù)庫,并使用Amazon EC2處理運(yùn)算需求。
本文聚焦于區(qū)塊鏈的大框架:介紹區(qū)塊鏈中各個(gè)計(jì)算元素的模塊以及各個(gè)模塊的一些實(shí)現(xiàn)案例,偏向概論而非詳解。
區(qū)塊鏈的組成模塊
以下是去中心化技術(shù)中各個(gè)計(jì)算元素的構(gòu)件塊:
- 存儲(chǔ):代幣存儲(chǔ)、數(shù)據(jù)庫、文件系統(tǒng)/blob
- 處理:有狀態(tài)的業(yè)務(wù)邏輯、無狀態(tài)的業(yè)務(wù)邏輯、高性能計(jì)算
- 通信:數(shù)據(jù)、價(jià)值和狀態(tài)的連接網(wǎng)絡(luò)
區(qū)塊鏈的基礎(chǔ)架構(gòu)縱覽
區(qū)塊鏈技術(shù)體現(xiàn)在每個(gè)模塊中,如下圖所示[2]:
存儲(chǔ)
作為基本計(jì)算元素,存儲(chǔ)部分包含了以下構(gòu)件塊。
代幣存儲(chǔ)。代幣是價(jià)值的存儲(chǔ)媒介(例如資產(chǎn)、證券等),價(jià)值可以是比特幣、航空里程或是數(shù)字作品的版權(quán)。代幣存儲(chǔ)系統(tǒng)的主要作用是發(fā)放和傳輸代幣(有多種變體),同時(shí)防止多重支付之類的事件發(fā)生。
比特幣和Zcash是兩大“純凈”的、只關(guān)注代幣本身的系統(tǒng)。以太坊則開始將代幣用于各種服務(wù),以實(shí)現(xiàn)其充當(dāng)全球計(jì)算中心的理想。這些例子中代幣被用作運(yùn)營整個(gè)網(wǎng)絡(luò)架構(gòu)的內(nèi)部激勵(lì)。
還有些代幣不是網(wǎng)絡(luò)用來推動(dòng)自身運(yùn)行的內(nèi)部工具,而是用做更高級(jí)別網(wǎng)絡(luò)的激勵(lì),但它們的代幣實(shí)際上是存儲(chǔ)在底層架構(gòu)中的。一個(gè)例子是像Golem這樣的ERC20代幣,運(yùn)行在以太坊網(wǎng)絡(luò)層上。另一個(gè)例子是Envoke的IP授權(quán)代幣,運(yùn)行在IPDB網(wǎng)絡(luò)層上。
最后我用“.*”來說明大多數(shù)區(qū)塊鏈系統(tǒng)都有一套代幣存儲(chǔ)機(jī)制。
數(shù)據(jù)庫。數(shù)據(jù)庫專門用來存儲(chǔ)結(jié)構(gòu)化的元數(shù)據(jù),例如數(shù)據(jù)表(關(guān)系型數(shù)據(jù)庫)、文檔存儲(chǔ)(例如JSON)、鍵值存儲(chǔ)、時(shí)間序列或圖數(shù)據(jù)庫。數(shù)據(jù)庫可以使用SQL這樣的查詢快速檢索數(shù)據(jù)。
傳統(tǒng)的分布式(但中心化)數(shù)據(jù)庫如MongoDB和Cassandra通常會(huì)存儲(chǔ)數(shù)百TB甚至PB級(jí)的數(shù)據(jù),性能可達(dá)到每秒百萬次寫入。
SQL這樣的查詢語言是很強(qiáng)大的,因?yàn)樗鼘?shí)現(xiàn)與規(guī)范區(qū)分開來,這樣就不會(huì)綁定在某個(gè)具體的應(yīng)用上。SQL已經(jīng)作為標(biāo)準(zhǔn)應(yīng)用了數(shù)十年,所以同一個(gè)數(shù)據(jù)庫系統(tǒng)可以用在很多不同的行業(yè)中。
換言之,要在比特幣之外討論一般性,不一定要拿圖靈完備性說事。你只需要一個(gè)數(shù)據(jù)庫就夠了,這樣既簡潔又方便擴(kuò)展。有些時(shí)候圖靈完備也是很有用的,我們將在“去中心化處理”一節(jié)具體討論。
BigchainDB是去中心化的數(shù)據(jù)庫軟件,是專門的文檔存儲(chǔ)系統(tǒng)。它基于MongoDB(或RethinkDB),繼承了后者的查詢和擴(kuò)展邏輯。但它也具備了區(qū)塊鏈的特征,諸如去中心化控制、防篡改和代幣支持。IPDB是BigchainDB的一個(gè)受監(jiān)管的公開實(shí)例。
在區(qū)塊鏈領(lǐng)域,也可以說IOTA是一個(gè)時(shí)間序列數(shù)據(jù)庫。
文件系統(tǒng)/blob數(shù)據(jù)存儲(chǔ)。這些系統(tǒng)以目錄和文件的層級(jí)結(jié)構(gòu)來存儲(chǔ)大文件(電影、音樂、大數(shù)據(jù)集)。
IPFS和Tahoe-LAFS是去中心化的文件系統(tǒng),包含去中心化或中心化的blob存儲(chǔ)。FileCoin、Storj、Sia和Tieron是去中心化的blob存儲(chǔ)系統(tǒng),古老而出色的BitTorrent也是如此,雖然后者使用的是p2p體系而非代幣。以太坊Swarm、Dat、Swarm-JS基本上都支持上述兩種方式。
數(shù)據(jù)市場。這種系統(tǒng)將數(shù)據(jù)所有者(比如企業(yè))與數(shù)據(jù)使用者(比如AI創(chuàng)業(yè)公司)連接在一起。它們位于數(shù)據(jù)庫與文件系統(tǒng)的上層,但依舊是核心架構(gòu),因?yàn)閿?shù)不清的需要數(shù)據(jù)的應(yīng)用(例如AI)都依賴這類服務(wù)。Ocean就是協(xié)議和網(wǎng)絡(luò)的一個(gè)例子,可以基于它創(chuàng)建數(shù)據(jù)市場。還有一些特定應(yīng)用的數(shù)據(jù)市場:Enigma Catalyst用于加密市場,Datum用于私人數(shù)據(jù),DataBroker DAO則用于物聯(lián)網(wǎng)數(shù)據(jù)流[2]。
處理
接下來討論處理這個(gè)基本計(jì)算元素。
“智能合約”系統(tǒng),通常指的是以去中心化形式處理數(shù)據(jù)的系統(tǒng)[3]。它其實(shí)有兩個(gè)屬性完全不同的子集:無狀態(tài)(組合式)業(yè)務(wù)邏輯和有狀態(tài)(順序式)業(yè)務(wù)邏輯。無狀態(tài)和有狀態(tài)在復(fù)雜性、可驗(yàn)證性等方面差異巨大。第三種去中心化的處理模塊是高性能計(jì)算(HPC)。
無狀態(tài)(組合式)業(yè)務(wù)邏輯。這是一種任意邏輯,不在內(nèi)部保留狀態(tài)。用電子工程術(shù)語來說,它可以理解為組合式數(shù)字邏輯電路。這一邏輯可以表現(xiàn)為真值表、邏輯示意圖、或者帶條件語句的代碼(if/then、and、or、not等判斷的組合)。因?yàn)樗鼈儧]有狀態(tài),很容易驗(yàn)證大型無狀態(tài)智能合約,從而創(chuàng)建大型可驗(yàn)證的安全系統(tǒng)。N個(gè)輸入和一個(gè)輸出需要O(2^N)個(gè)計(jì)算來驗(yàn)證。
跨賬本協(xié)議(ILP)包含crypto-conditions(CC)協(xié)議,以便清楚地標(biāo)出組合電路。CC很好理解,因?yàn)樗ㄟ^IETF成為了互聯(lián)網(wǎng)標(biāo)準(zhǔn),而ILP則在各種中心和去中心化的支付網(wǎng)絡(luò)(例如超過75家銀行使用的瑞波)中廣泛應(yīng)用。CC有很多獨(dú)立實(shí)現(xiàn)的版本,包括JavaScript、Python、Java等。BigchainDB、瑞波等系統(tǒng)也用CC,用以支持組合式業(yè)務(wù)邏輯/智能合約。
Bitshare和Eos也支持無狀態(tài)業(yè)務(wù)邏輯。
因?yàn)橛袪顟B(tài)邏輯是無狀態(tài)邏輯的超集,支持有狀態(tài)邏輯的系統(tǒng)也自然支持無狀態(tài)邏輯(但代價(jià)是增加復(fù)雜性,可驗(yàn)證性方面也要考慮更多問題)。
BigchainDB、Bitshares、Eos還支持事件。它提供了一種持久的層級(jí),使功能更接近有狀態(tài)的業(yè)務(wù)邏輯(感謝Ian Grigg指出這一點(diǎn)[2])。
有狀態(tài)(順序)業(yè)務(wù)邏輯。這是一種在內(nèi)部保留狀態(tài)的任意邏輯。也就是說,它有記憶,或者說它是一種帶有至少一個(gè)反饋回路(和一個(gè)時(shí)鐘)的組合邏輯電路。例如,一顆微處理器有一個(gè)內(nèi)部寄存器,根據(jù)發(fā)送給它的機(jī)器碼指令進(jìn)行更新。更一般地說,有狀態(tài)的業(yè)務(wù)邏輯是一個(gè)圖靈機(jī),接受一系列輸入并返回一系列輸出。有這種(實(shí)際近似)表現(xiàn)的系統(tǒng)被稱為圖靈完備系統(tǒng)[4]。
以太坊是最知名的使用有狀態(tài)業(yè)務(wù)邏輯/智能合約的區(qū)塊鏈系統(tǒng),其智能合約直接在鏈上運(yùn)行。Lisk、RChain、DFINITY、Aeternity、Tezos、Fabric、Sawtooth和很多其它系統(tǒng)也有智能合約。運(yùn)行“在某處”的代碼是個(gè)強(qiáng)大的理念,有很多使用場景。這也能部分解釋為什么以太坊一飛沖天,為什么它的生態(tài)系統(tǒng)如此興旺,以及為什么會(huì)有這么多競爭者在這一領(lǐng)域崛起。
因?yàn)轫樞蜻壿嬍墙M合邏輯的超集,這類系統(tǒng)也支持組合邏輯。
正如DAO黑客所示,代碼中的小錯(cuò)誤可能導(dǎo)致嚴(yán)重后果。芯片產(chǎn)業(yè)采用的形式化驗(yàn)證也能在這里發(fā)揮作用,以太坊基金會(huì)正在這方面做出努力。但它有規(guī)模限制:對(duì)于組合電路,可能的映射數(shù)量最多有2^(輸入數(shù)量)種。對(duì)于時(shí)序電路,內(nèi)部狀態(tài)的上限是2^(內(nèi)部狀態(tài)變量的數(shù)量),前提是內(nèi)部的變量都是布爾值。例如,對(duì)于一個(gè)帶有3個(gè)輸入的組合電路,它有2^3=8種可能的狀態(tài)供驗(yàn)證。但如果它是一個(gè)帶有32位寄存器的時(shí)序電路,要完整驗(yàn)證就要檢查2^32=42億種狀態(tài)。這一限制約束了時(shí)序電路的復(fù)雜程度(如果要保證可信度)。“按結(jié)構(gòu)修正”是另一種驗(yàn)證有狀態(tài)智能合約的手段,比如Rchain使用的rho微積分。
如果需要去中心化的處理,很多場景下有個(gè)更簡單的方法:只要把處理過程放在客戶端一側(cè),運(yùn)行在瀏覽器或移動(dòng)設(shè)備中,用JS或Swift代碼編寫就行了。這個(gè)時(shí)候就要信賴客戶端的處理過程,如果設(shè)備是你自己控制的那就沒什么問題。我們把它叫做“胖客戶端”,是相對(duì)于“胖協(xié)議”架構(gòu)來說的。這種體系對(duì)主流web開發(fā)者很友好。例如,很多web應(yīng)用需要用到應(yīng)用狀態(tài)。要開發(fā)這樣的系統(tǒng)只需要用到JS+IPDB(使用js-bigchaindb驅(qū)動(dòng))。如果你的應(yīng)用也需要blob存儲(chǔ)和支付功能,就再加上JS的IPFS客戶端版本(ipfs.js)和以太坊版本(web3.js),比如:
?
高性能計(jì)算(HPC)。這是一種處理“重負(fù)載”計(jì)算任務(wù)的過程,諸如渲染、機(jī)器學(xué)習(xí)、電路模擬、氣象預(yù)報(bào)、蛋白質(zhì)折疊等任務(wù)都是這種類型。這類計(jì)算任務(wù)往往花費(fèi)幾個(gè)小時(shí)、甚至數(shù)周時(shí)間,運(yùn)行在整套機(jī)器集群上(CPU、GPU甚至TPU)。
這些方法可以讓HPC去中心化:
- Golem和iEx.ec可以用來組成去中心化的超級(jí)計(jì)算機(jī)及相關(guān)的應(yīng)用框架。
- Nyriad可以組成存儲(chǔ)處理框架。基本上這個(gè)處理過程與中心化的存儲(chǔ)是放在一起的(Nyriad也有適合后者的方案)。
- TrueBit實(shí)現(xiàn)第三方計(jì)算,并進(jìn)行后期計(jì)算檢查(空閑時(shí)進(jìn)行隱式檢查,出現(xiàn)問題時(shí)進(jìn)行顯式檢查)。
- 有些人只是用VM或Docker容器執(zhí)行復(fù)雜的計(jì)算任務(wù),將結(jié)果(VM最終狀態(tài)或單純的計(jì)算結(jié)果)放到blob存儲(chǔ)里,只提供有限的訪問權(quán)限。然后他們把存儲(chǔ)訪問授權(quán)賣給容器使用者,比如代幣讀取權(quán)限。這種方式需要更多客戶端來驗(yàn)證結(jié)果,好處在于技術(shù)都很成熟。當(dāng)TrueBit成熟后,這種方法自然會(huì)與其融合。
通信
這一節(jié)我們會(huì)談到第三個(gè)也是最后一個(gè)基本的計(jì)算元素,通信。描繪通信框架的方法很多,我會(huì)重點(diǎn)介紹網(wǎng)絡(luò)連接。它有三個(gè)層級(jí):數(shù)據(jù)、價(jià)值和狀態(tài)。
數(shù)據(jù)。60年代,ARPA.net誕生了。它的成功催生了一系列類似的網(wǎng)絡(luò),諸如NPL和CYCLADES。新的問題隨之出現(xiàn):它們無法互相交流。Cerf和Kahn在70年代發(fā)明了TCP/IP來連接這些網(wǎng)絡(luò),創(chuàng)建一個(gè)網(wǎng)絡(luò)組成的聯(lián)網(wǎng)系統(tǒng),也就是今天我們熟知的Internet。TCP/IP是當(dāng)今網(wǎng)絡(luò)連接的事實(shí)標(biāo)準(zhǔn)。OSI協(xié)議棧曾經(jīng)是它的競爭對(duì)手,但很早就消亡了;然而諷刺的是,OSI的模型被證明是有用的。于是,雖然TCP/IP歷史悠久,但它仍然是連接網(wǎng)絡(luò)數(shù)據(jù)的去中心化構(gòu)件。
Tor項(xiàng)目可以被視為TCP/IP的上層,用來保護(hù)用戶的隱私。然而它有很多中心化的特點(diǎn),更不要說它獲得了國防部的資助,令很多人不滿。代幣化的類Tor項(xiàng)目正在興起,可以拭目以待[2]。
價(jià)值。TCP/IP只在數(shù)據(jù)層連接不同網(wǎng)絡(luò)。你可以復(fù)送分包——將一個(gè)分包一次發(fā)送到很多目的地——也無所謂。但如果要在網(wǎng)絡(luò)中發(fā)送價(jià)值時(shí),該怎樣連接網(wǎng)絡(luò)呢?比如比特幣到以太坊,乃至SWIFT清算網(wǎng)絡(luò)到瑞波XRP網(wǎng)絡(luò)。你需要代幣能一次只發(fā)送到一個(gè)目的地。防止重復(fù)發(fā)送的一種聯(lián)網(wǎng)方式是使用匯票,但這種做法往往消耗很多資源。但是,我們可以只保留匯票的核心要素,拋開信任中介,使用密鑰托管。愛麗絲可以通過馬洛里向鮑勃匯款,款項(xiàng)經(jīng)過馬洛里之手但他不能動(dòng)用(并且有期限約束,馬洛里不能一直占著款子不放)。這就是跨賬本協(xié)議(ILP)的核心要素。這也是雙向掛鉤(想想側(cè)鏈)和狀態(tài)管道(比如Lightning和Raiden)的理念;但重點(diǎn)完全在于為價(jià)值交換連接網(wǎng)絡(luò)。除了ILP,Cosmos等系統(tǒng)會(huì)更復(fù)雜一些,以換取更多便利。
狀態(tài)。除了連接價(jià)值網(wǎng)絡(luò),我們能否更進(jìn)一步?想象一個(gè)計(jì)算機(jī)病毒,其帶有自己的比特幣錢包,可以在網(wǎng)絡(luò)間跳轉(zhuǎn);或者以太坊主網(wǎng)中的一個(gè)智能合約,可以將其狀態(tài)轉(zhuǎn)向另一個(gè)以太坊網(wǎng)絡(luò)乃至另一個(gè)兼容網(wǎng)絡(luò)?或者,為什么將AI DAO局限在單一網(wǎng)絡(luò)中?
于是誕生了Polkadot,用來連接網(wǎng)絡(luò)的狀態(tài)。Aeternity也介于價(jià)值網(wǎng)絡(luò)和狀態(tài)網(wǎng)絡(luò)之間。
案例
現(xiàn)在我們研究了三大計(jì)算元素(存儲(chǔ)、處理、通信),探討了每種元素的去中心化構(gòu)件,以及每種構(gòu)件的項(xiàng)目實(shí)例。
人們開始發(fā)展組合式的系統(tǒng)。有很多由兩種構(gòu)件組成的模式,通常使用IPFS+以太坊或IPFS+IPDB。甚至有人使用三個(gè)或更多的模塊組合。以下是一些前沿案例:
- Ujo使用IPFS|Swarm+IPDB+以太坊,用于去中心化音樂網(wǎng)絡(luò)。IPFS或Swarm用在文件系統(tǒng)和blob存儲(chǔ)上。IPDB(和BigchainDB)用于元數(shù)據(jù)存儲(chǔ)和查詢。以太坊用于代幣存儲(chǔ)和有狀態(tài)業(yè)務(wù)邏輯。
- Innogy使用IPFS+IPDB+IOTA,用于供應(yīng)鏈/物聯(lián)網(wǎng)應(yīng)用。IPFS用于文件系統(tǒng)和blob存儲(chǔ)。IPDB(和BigchainDB)用于元數(shù)據(jù)存儲(chǔ)和查詢。IOTA用于時(shí)間序列數(shù)據(jù)。
相關(guān)工作
以下是區(qū)塊鏈社區(qū)其他研究者的相關(guān)框架,我很高興能與他們進(jìn)行很好的交流。
Joel Monegro的“胖協(xié)議”框架強(qiáng)調(diào)每個(gè)構(gòu)件都是一個(gè)協(xié)議。我覺得這是一個(gè)很酷的框架,盡管它要求構(gòu)件之間只能使用網(wǎng)絡(luò)協(xié)議交流。還有一種方式:模塊可以簡單地成為“導(dǎo)入”語句或庫調(diào)用。
使用導(dǎo)入的原因可以是為了(a)更低的延遲:一個(gè)網(wǎng)絡(luò)呼叫要花費(fèi)時(shí)間,可能影響乃至破壞可用性;(b)簡潔:使用庫調(diào)用(乃至嵌入代碼)往往比連接到一個(gè)網(wǎng)絡(luò)、支付代幣等更簡單;(c)更加成熟:協(xié)議棧才剛剛興起。我們有歷史數(shù)十年之久的優(yōu)秀Unix庫,甚至Python和JS模塊也有15年以上的歷史。
Fred Ehrsam的“Dapp開發(fā)者協(xié)議棧”強(qiáng)調(diào)web商業(yè)模式。雖然它很有幫助,但它不是要針對(duì)給定計(jì)算元素(比如文件系統(tǒng)與數(shù)據(jù)庫)在模塊之間進(jìn)行細(xì)化區(qū)分的。
BigchainDB白皮書(最早發(fā)布于2016年2月)第一部分展示了其早期版本的形態(tài),如下所示:
它關(guān)注于處理、文件系統(tǒng)和數(shù)據(jù)庫這幾大構(gòu)件。它沒有使用“計(jì)算元素”的框架,沒有區(qū)分去中心化處理的類型。本文是我在過去一年半根據(jù)這份白皮書進(jìn)一步思考的成果;我在5月22日在Consensus 2017上的演講進(jìn)一步補(bǔ)充了我的觀點(diǎn),與本文內(nèi)容很接近。(我寫這篇文章的部分原因是很多人請(qǐng)我將這些思考化作文字)。
該圖還指出了一個(gè)頻譜,最左邊是完全的中心化,最右是完全的去中心化。這有助于將已有的軟件系統(tǒng)升級(jí)為更加去中心化的形式,將最有必要升級(jí)的模塊優(yōu)先去中心化。
Stephan Tual的“Web 3.0重構(gòu)”堆棧與本文的思想基本一致,只不過更偏重于以太坊。它為社區(qū)提供了很好的服務(wù),用一張映射圖將很多項(xiàng)目歸類到相似的構(gòu)件中。我驚喜地意識(shí)到它與我的思想非常相似。不過它的應(yīng)用服務(wù)模塊層(消息模塊、存儲(chǔ)模塊、共識(shí)模塊、管理模塊……)實(shí)際上將三種事物混合在一起:應(yīng)用、“是什么”和“怎樣做”。對(duì)我而言,模塊應(yīng)該是“是什么”的類別。所以消息是一個(gè)應(yīng)用(應(yīng)該在應(yīng)用層);存儲(chǔ)應(yīng)該更加細(xì)粒化;共識(shí)是“怎樣做”的部分(隱藏在一些模塊里);管理也是“怎樣做”的部分(所以也該隱藏起來)。它也有“網(wǎng)絡(luò)”協(xié)議,用作單獨(dú)的底層模塊,不過我將它們視為模塊間交互的一種可行方式,與庫調(diào)用類似。不管怎樣,我認(rèn)為這是非常出色的堆棧。
Alexander Ruppert的“映射去中心化世界”有大約20類組織,x軸有四個(gè)高級(jí)類,依次是基礎(chǔ)設(shè)施層、中間件層、流動(dòng)層、應(yīng)用層。這也是很棒的部分;我很高興能幫助Alex做出這個(gè)映射。它對(duì)核心基礎(chǔ)設(shè)施著墨不多,更注重廣泛的趨勢;而本文主要寫的是核心基礎(chǔ)設(shè)施的框架原則。
未來
Ujo這樣的系統(tǒng)將很多模塊合并在一起,諸如IPFS或Swarm(用于blob)+以太坊(用于代幣和業(yè)務(wù)邏輯)+IPDB和BigchainDB(用于可快速查詢的數(shù)據(jù)庫),所以綜合了所有系統(tǒng)的優(yōu)點(diǎn)。
我希望隨著人們更好地理解構(gòu)件之間的關(guān)系,這種趨勢也會(huì)隨之加速。這也比把所有東西都塞入名為“區(qū)塊鏈”的單一框架更有效率。
我希望這一理念隨著去中心化生態(tài)系統(tǒng)一起繼續(xù)進(jìn)化。AWS一開始只有一種服務(wù):為blob存儲(chǔ)提供的S3服務(wù);之后它有了處理服務(wù):EC2;它繼續(xù)進(jìn)化。AWS現(xiàn)在有50多個(gè)模塊,當(dāng)然其中少數(shù)模塊依舊是最關(guān)鍵的。下圖列出了AWS的所有服務(wù)。
aws.amazon.com的完整服務(wù)截圖,2017年7月15日
我發(fā)現(xiàn)類似的故事正在去中心化世界上演。初看起來,我們可以設(shè)想每一個(gè)AWS模塊的去中心化版本。但也會(huì)有不同點(diǎn),因?yàn)槊糠N生態(tài)系統(tǒng)(云、移動(dòng)、去中心化)都有自己的特定模塊,比如去中心化的代幣存儲(chǔ)。這將是很有趣的旅程!
注釋
[1] 其實(shí)我們可以進(jìn)一步對(duì)這些構(gòu)件進(jìn)行分級(jí)。例如數(shù)據(jù)庫是在文件系統(tǒng)之上的。后者則在原始數(shù)據(jù)(blob)存儲(chǔ)之上。分布式數(shù)據(jù)庫推動(dòng)通信發(fā)展。例如,多數(shù)現(xiàn)代數(shù)據(jù)庫使用Ext4、XFS或GridFS等文件系統(tǒng)與底層存儲(chǔ)。本文中我給出的框架是應(yīng)用開發(fā)者的視點(diǎn):文件系統(tǒng)的UX是什么,數(shù)據(jù)庫的UX是什么,等等。
[2] 2017年8月我在此加入了一些新內(nèi)容。
[3] 我從未真正喜歡過“智能合約”這種說法。在AI語境下它們并不算智能。它們也和”合約“這個(gè)法律概念沒有關(guān)系。如果它們的確包含法律元素,它們通常會(huì)加上狀態(tài),比如說用Ricardian合約。”去中心化處理“的稱謂和其中的”去中心化業(yè)務(wù)邏輯“更加合理。不過現(xiàn)在“智能合約”的叫法如此普及,就這么叫也可以。相比糾結(jié)稱謂,我們有更有意義的事情要做。
[4] 這里我提到的“圖靈完備”是實(shí)踐層面的,不是純粹理論層面的。理論上,機(jī)器根據(jù)輸入數(shù)據(jù)及其當(dāng)前內(nèi)部狀態(tài)返回一系列輸出數(shù)據(jù);但實(shí)踐上,機(jī)器無法永續(xù)運(yùn)行,無法解決“機(jī)器何時(shí)停止”的問題(停止問題)。
原文鏈接:https://blog.bigchaindb.com/blockchain-infrastructure-landscape-a-first-principles-framing-92cc5549bafe
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/8743473.html
總結(jié)
以上是生活随笔為你收集整理的区块链基础设施纵览:基本框架原则——揭示存储、计算和通信元素的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个简单可参考的API网关架构设计
- 下一篇: Docker说了这么多 最全的一篇在这里