區(qū)塊鏈適合做什么和不適合做什么
前言:關(guān)于區(qū)塊鏈適合做什么和不適合做什么?一直都有爭(zhēng)議。那么,通過什么方式來(lái)辨別呢?本文用詳細(xì)的流程圖來(lái)應(yīng)對(duì)這個(gè)問題。
圍繞區(qū)塊鏈的大肆炒作嚴(yán)重夸大了這項(xiàng)新技術(shù)的實(shí)際能力和應(yīng)用。這種狂熱使得企業(yè)、開發(fā)者和投資人難以理解其實(shí)際的局限性并找出適合區(qū)塊鏈或者分布式賬本技術(shù)的正確應(yīng)用場(chǎng)景。
來(lái)自ETH Zurich的Karl Wüst和Arthur Gervais最近發(fā)布了一份同行評(píng)審論文,它提出了一種結(jié)構(gòu)性的方法,該方法有助于確定特定應(yīng)用問題應(yīng)該如何解決的合理技術(shù)方案。本文中,我們將介紹這種方法并解釋論文中的用到的一些例子。
技術(shù)對(duì)比
區(qū)塊鏈?zhǔn)且环N持久化(保存)狀態(tài)的“僅可添加”的賬本。狀態(tài)可以是交易信息,程序數(shù)據(jù),或者哈希過的文檔等等。基本上,就是任何需要持久化存儲(chǔ)的信息。數(shù)據(jù)庫(kù)擔(dān)當(dāng)這項(xiàng)任務(wù)已有幾十個(gè)年頭。此外,區(qū)塊鏈代表了一種新的狀態(tài)持久化技術(shù)——并且包含數(shù)字簽名和防篡改在內(nèi)的額外特性。讓我們來(lái)重新審查一下三種主流技術(shù):
1.數(shù)據(jù)庫(kù)
首先,數(shù)據(jù)庫(kù)(單個(gè),并行,或者分布式)被用于持久化狀態(tài)和查詢數(shù)據(jù)已經(jīng)有幾十年歷史。大量有價(jià)值的研究已經(jīng)被用于優(yōu)化不同層級(jí)的查詢處理和狀態(tài)持久化上。
? 自然地,在交易吞吐量和查詢延遲方面它們擁有最高的性能。
? 然而,一直以來(lái),它們被設(shè)計(jì)為單一機(jī)構(gòu)的中心化管理。因此,不同參與方之間不需要共識(shí)機(jī)制。
2.公鏈(Permissionless Blockchains)
公鏈?zhǔn)遣皇苤行幕瘷C(jī)構(gòu)管理的公共賬本(狀態(tài))。也就是說(shuō),賬本分布在一個(gè)動(dòng)態(tài)P2P網(wǎng)絡(luò)中,網(wǎng)絡(luò)中可能還會(huì)有惡意的節(jié)點(diǎn)。
? 中本聰?shù)闹腔墼谟谠O(shè)計(jì)了一種分布式狀態(tài)上維持共識(shí)的機(jī)制,且是在動(dòng)態(tài)和不可信的網(wǎng)絡(luò)中實(shí)現(xiàn)的。這意味著公鏈可以容忍網(wǎng)絡(luò)中包含少量拜占庭或不可信行為。
? 凡事都有代價(jià),需要在性能消耗(吞吐量和延遲)上有所取舍。在比特幣中,急劇的性能下降是由于POW協(xié)議本身的設(shè)計(jì)就非常慢。和普通數(shù)據(jù)庫(kù)相比,在任何公鏈中,性能的下降都是不可避免的。因?yàn)椴还茉趺礃?,要維護(hù)分布式狀態(tài)的一致性,(地理分布)網(wǎng)絡(luò)中的不同節(jié)點(diǎn)之間就必須進(jìn)行通信。
3.聯(lián)盟鏈(Permissioned Blockchains)
聯(lián)盟鏈代表了一種混合式的設(shè)計(jì)選擇。特別的,他們不是單一的中心化實(shí)體,而是授權(quán)給一小部分預(yù)先選定可以寫入狀態(tài)的可信節(jié)點(diǎn)。
? 由于數(shù)據(jù)庫(kù)網(wǎng)絡(luò)不會(huì)擴(kuò)展到大量的公共節(jié)點(diǎn),和公鏈相比,它的吞吐量和延遲要好得多。
? 盡管如此,它的性能仍然無(wú)法跟一個(gè)中心化數(shù)據(jù)庫(kù)相匹敵。
在看完這些不同系統(tǒng)之后,我們很容易認(rèn)識(shí)到?jīng)]有一個(gè)適用于所有場(chǎng)景的方案。任何事情都需要有所取舍。不同的應(yīng)用有不同的需求,因此需要不同的合適的解決方案。
“你需要區(qū)塊鏈嗎?”流程圖
選擇正確技術(shù)方案的流程圖。TTP(Trusted Third Party)代表可信第三方,writer是一個(gè)可以寫入狀態(tài)到數(shù)據(jù)庫(kù)或者區(qū)塊鏈的實(shí)體。
這一節(jié)描述了論文中一個(gè)通用的高層次流程圖,用于為你的應(yīng)用尋找合適的技術(shù)。注意writer是一個(gè)可以將狀態(tài)寫入數(shù)據(jù)庫(kù)或區(qū)塊鏈的實(shí)體。
1.如果你的應(yīng)用不需要持久化狀態(tài),那么很明顯不需要區(qū)塊鏈或者任何數(shù)據(jù)庫(kù)。
2.類似的,如果只有一個(gè)寫入狀態(tài)的writer,那么和常規(guī)數(shù)據(jù)庫(kù)相比區(qū)塊鏈并不能提供額外的保障。相反,從性能角度來(lái)說(shuō)數(shù)據(jù)庫(kù)可能更加高效。
3.否則,如果有超過一個(gè)寫入狀態(tài)的writer,我們選擇另外一條路徑。問題變成了是不是有一個(gè)在線TTP(可信第三方)就足夠了,或者換句話說(shuō),是否需要防篡改。如果應(yīng)用不能依賴單一可信實(shí)體,我們可以進(jìn)一步分析是否需要區(qū)塊鏈。否則,不需要用區(qū)塊鏈,從性能角度來(lái)說(shuō)依賴一個(gè)中心化實(shí)體更加高效。
4.下一個(gè)問題是“所有寫入狀態(tài)的writer的身份是否可知?”。如果由于身處不可信的動(dòng)態(tài)網(wǎng)絡(luò)因而身份不可知,比如互聯(lián)網(wǎng),那么公鏈?zhǔn)呛线m的選擇。
5.否則,如果身份是可知的,那么下一個(gè)問題是“這些writer是否彼此信任?”。如果是,那么也不需要區(qū)塊鏈,使用提供共享寫入權(quán)限的數(shù)據(jù)庫(kù)就足夠了。否則,如果writer們不信任彼此,那么最合適的技術(shù)是聯(lián)盟鏈。
6.最后,如果是聯(lián)盟鏈,取決于是否要求公開可驗(yàn)證性,允許任何人讀取狀態(tài)(公開聯(lián)盟鏈)或者只有少部分受限的用戶(私有聯(lián)盟鏈)。
應(yīng)用實(shí)例
讓我們通過一些例子來(lái)理解什么應(yīng)用確實(shí)需要區(qū)塊鏈,哪些不需要以及為什么不需要。
不需要區(qū)塊鏈的應(yīng)用
? 供應(yīng)鏈管理(SCM):這的確是一類反復(fù)出現(xiàn)的應(yīng)用。讓我們按照流程圖來(lái)找出最為匹配的技術(shù)。
1.SCM確實(shí)需要存儲(chǔ)數(shù)據(jù)。
2.涉及多個(gè)writer,即擁有最終產(chǎn)品的某些部分的不同參與方。
3.繼續(xù)我們的方法,SCM在技術(shù)上很可能總是使用一個(gè)在線TTP。例如,Skuchain承認(rèn)只需要單一的信任源,然而這就去除了區(qū)塊鏈的去中心化成分,因此它等價(jià)于一個(gè)可信的中心化服務(wù)器。
4.如果那樣做不可行,至少所有的writer是可知的,這樣留給我們的只有聯(lián)盟鏈或者不使用區(qū)塊鏈這兩個(gè)選擇。
5.SCM在數(shù)字和物理世界之間的接口存在一致性問題。通常需要人或者某些受單一writer控制的機(jī)器來(lái)登記到達(dá)倉(cāng)庫(kù)的某個(gè)商品,如果質(zhì)量沒有問題的話。如果這些雇員的操作是不可信的,那么整個(gè)供應(yīng)鏈就是一種技術(shù)上的妥協(xié),因?yàn)閻阂鈝riter可以提供任意數(shù)據(jù)。從另一方面來(lái)說(shuō),如果所有的writer們都是可信的,那么就不需要區(qū)塊鏈,因?yàn)槭褂靡粋€(gè)提供共享寫入權(quán)限的常規(guī)數(shù)據(jù)庫(kù)即可。
注意如果通過一些技術(shù)手段,數(shù)字和物理世界之間的連接可以通過一種安全的方式實(shí)現(xiàn),那么前面的論證可能會(huì)發(fā)生變化。
? 物聯(lián)網(wǎng):很多人提出了區(qū)塊鏈技術(shù)在物聯(lián)網(wǎng)(IoT)上的可能使用場(chǎng)景,通過智能合約來(lái)為資源的消費(fèi)和供給的支付提供一個(gè)自治系統(tǒng)。由于系統(tǒng)固有的去中心化特性,實(shí)體們彼此互不信任,使用區(qū)塊鏈似乎很自然。
然而,和供應(yīng)鏈管理一樣,物理和數(shù)字世界之間的接口造成了潛在的問題。如果計(jì)算機(jī)把從傳感器中讀到的數(shù)值提供給區(qū)塊鏈,區(qū)塊鏈無(wú)法保證這些數(shù)值的正確性。如果只是需要自動(dòng)化,沒有必要使用區(qū)塊鏈,可以用一個(gè)可信方來(lái)代替。
適合使用區(qū)塊鏈的應(yīng)用
跨行和跨境支付:對(duì)于金融應(yīng)用,一般來(lái)說(shuō)區(qū)塊鏈技術(shù)非常合適,因?yàn)閰⑴c方通常都希望規(guī)避風(fēng)險(xiǎn)并且不想依賴強(qiáng)信任假設(shè)。
1.在跨行支付中包含多方(銀行)擔(dān)任的writer及想要交換價(jià)值和交易的主體。因此狀態(tài)需要被持久化。
2.銀行都是writer,因此有不止一個(gè)writer。
3.在單幣種系統(tǒng)中,中央銀行可以作為TTP。
4.否則,還有一種配置,中央銀行不想擔(dān)任每筆交易的驗(yàn)證者,只想作為一個(gè)認(rèn)證授權(quán)機(jī)構(gòu)給銀行們發(fā)放牌照,讓它們參與到系統(tǒng)中來(lái)。這意味著系統(tǒng)的所有writer都是可知的,我們可以使用聯(lián)盟鏈。
? 貿(mào)易和公平交易協(xié)議:類似的,數(shù)字商品的交易很可能不需要一個(gè)可信的爭(zhēng)端調(diào)停者,因此非常適合使用區(qū)塊鏈,而物理商品則仍然需要可信第三方來(lái)解決爭(zhēng)端。
? 電子投票:類似的,電子投票也具有區(qū)塊鏈可以派上用場(chǎng)的屬性。例如,一方面,隱私是一個(gè)主要需求,因?yàn)橥镀北仨毷悄涿膹亩苊獗幻{迫。另一方面,電子投票需要提供一定的公開可驗(yàn)證性。由于有這些需求,使用區(qū)塊鏈來(lái)幫忙獲取這些渴望得到的屬性似乎是合理的。
結(jié)論
和傳統(tǒng)觀點(diǎn)相反,區(qū)塊鏈不是一種能解決所有技術(shù)問題的方案。實(shí)際上,它們更適用于滿足一組要求的某一類應(yīng)用。特別是那些寧可犧牲性能來(lái)?yè)Q取去中心化和防篡改的一致性狀態(tài)的應(yīng)用。
盡管如此,目前很多“承諾的”應(yīng)用仍然不適合使用區(qū)塊鏈,比如供應(yīng)鏈管理。在遇到那些狂熱的開發(fā)者和那些跟風(fēng)炒作并且不真正去思考他們方案的底層技術(shù)和必要性的企業(yè)家們時(shí),我們需要保持警惕。
到現(xiàn)在為止,有信任需求的數(shù)字商品和服務(wù)似乎是最適合使用區(qū)塊鏈的應(yīng)用場(chǎng)景。