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