圍繞區塊鏈的炒作是巨大的。周圍區塊鏈炒作的聲音告訴我們,區塊鏈在現在這個時代將:
解決收入不平等
永遠確保所有數據的安全
使一切變得更加高效和無需信任
無論如何,區塊鏈到底是什么?真的可以做所有這些事情嗎?區塊鏈能否為醫療,金融,供應鏈管理和音樂版權等行業帶來驚人的收益?
而且因為你不是比特幣就意味著你是更高端的區塊鏈嗎?普通人為何只看到比特幣三個字,卻對其背后偉大的技術默不作聲?
在本文中,我試圖通過讓你了解區塊鏈是什么,更重要的是,讓人們了解不是因為任何東西掛上區塊鏈三個字就可以解決很多現實問題。
什么是區塊鏈?
為了研究其中一些說法,我們必須定義什么是區塊鏈,而這正是其中許多困惑的來源。許多公司使用“區塊鏈”一詞來描述某種神奇的設備,通過這些設備,他們的所有數據都不會出錯。當然,至少在現實中,這種傳說中的設備是不存在的。
那么什么是區塊鏈?從技術上講,區塊鏈是區塊的鏈條,而區塊是一組有序交易。如果你不了解最后一句話,可以將區塊鏈視為數據庫里的子集,并具有一些其他屬性。
區分區塊鏈和普通數據庫的主要關鍵點是,關于如何將數據放入數據庫有特定的規則。也就是說,它不能與數據庫中已有的其他數據沖突(一致性),只能追加(不可變性),數據本身被鎖定為所有者(可擁有),可復制且可用。最后,每個人都同意在沒有中央參與者(去中心化)的情況下處理數據庫中事物的狀態(規則)。
最后一點確實是區塊鏈的圣杯。去中心化非常具有吸引力,因為它意味著沒有單點故障。也就是說,沒有任何一個權威機構能夠拿走您的資產或更改“歷史記錄”以滿足他們的需求。您無需信任任何人,這條不變的審計線索就是所有使用該技術的人都在尋找的好處。然而,這種好處需要付出巨大的代價。
區塊鏈的成本代價
不受任何一方控制的不可變的審計跟蹤無疑是有用的,但是創建這樣一個系統要付出很多成本。讓我們研究一些問題。
創建一個更嚴謹,不可篡改的,可證明一致性的系統并非易事。一個小錯誤可能會破壞整個數據庫或導致某些數據庫與其他數據庫不同。當然,已損壞或拆分的數據庫不再具有任何一致性保證。此外,所有此類系統必須從一開始就進行設計以保持一致。區塊鏈無法做到“快速確認并解決問題”。如果你破壞事物,則會失去一致性,并且區塊鏈將變得毫無價值。
您可能在想,為什么不能只修復數據庫或重新開始并繼續前進?在中心化的系統中這樣做很容易,但是在去中心化的系統中則很難。你需要達成共識或系統中所有參與者的同意才能更改數據庫。區塊鏈必須是不受單個實體(去中心化,還記得嗎?)控制的公共資源,否則整個工作是創建緩慢的集中式數據庫的一種非常昂貴的方法。
激勵結構難以設計
添加正確的激勵結構并確保系統中的所有參與者都不能濫用或破壞數據庫也是一個重要的考慮因素。區塊鏈可能是一致的,但是如果其中有很多瑣碎無用的數據,那么區塊鏈就不會很有用,因為將數據放入其中的成本非常低。如果幾乎沒有數據,那么一致的區塊鏈也沒有用,因為將數據放入其中的成本非常高。
是什么賦予數據確定性?您如何確保獎勵與網絡目標保持一致?為什么節點在發生沖突時會保留或更新數據,又為何使它們選擇一個數據而不是另一個呢?這些都是激勵性問題,需要良好的答案,并且不僅需要在開始時而且在未來隨著技術和公司的變化而協調一致,否則區塊鏈將無用。
再次,您可能想知道為什么您不能“解決”一些壞的動機。再一次,在中心化的系統中這很容易,但是在分布式系統中,您根本無法在沒有共識的情況下進行任何更改。除非所有人都同意,否則任何事情都無法“修復”。
維護區塊鏈系統非常昂貴
傳統的集中式數據庫只需寫入一次。區塊鏈需要被寫入數千次。傳統的集中式數據庫只需要檢查一次數據。區塊鏈需要檢查數據數千次。傳統的集中式數據庫只需傳輸一次數據即可存儲。區塊鏈需要傳輸數據數千次。
維護區塊鏈的成本要高出幾個數量級,而且成本需要通過效用來證明。大多數應用程序在尋找前面提到的某些屬性(如一致性和可靠性)時,可以通過完整性檢查,收據和備份來以更低的價格獲得這些東西。
用戶是主權控制者
由于公司不希望將用戶數據放在首位,因此這確實非常好。但是,如果用戶“行為不當”,這可能很糟糕。沒有辦法用瑣碎的數據來阻止用戶向你的區塊鏈發送垃圾郵件,或者想辦法以某種方式獲利,從而給其他用戶帶來很多不便。這與上述觀點有關,即激勵結構必須設計得非常好,特別是如果發現漏洞的用戶不太可能放棄,尤其是在為用戶帶來利益的情況下。
你可能會認為可以拒絕對惡意用戶的服務,這在集中式服務中非常容易做到。但是,與集中式服務不同,拒絕服務很困難,因為沒有一個實體有權將任何人趕出去。區塊鏈必須公正并執行軟件定義的規則。如果規則不足以阻止不良行為,那么您就不走運了。這里沒有法律的“精神”。你只需要與惡意或行為不端的行為者打交道,可能就需要很長時間。
所有版本升級均為自愿
強制升級不是區塊鏈系統的選擇。網絡上的其他廣播者沒有義務更改你的軟件。如果他們這樣做的話,將這樣的系統構建為中心化系統將更加容易,快捷和便宜。區塊鏈的要點是,它不受單個實體的控制,并且強制升級違反了這一規則。
相反,所有升級都必須向后兼容。這顯然是相當困難的,特別是如果您想添加新功能,并且從測試角度考慮時甚至更加困難。該軟件的每個版本都在測試矩陣中增加了很多內容,并延長了發布時間。
同樣,如果這是一個中心化系統,則不再維修舊系統將很容易糾正它。但是在分散式系統中,你無法執行此操作,因為你不能強迫任何人執行任何操作。
擴容真的很難
最后,擴容區塊鏈系統比傳統中心化式系統難至少大幾個數量級。原因很明顯。相同的數據必須存在于數百或數千個位置中,而不是單個位置。傳輸,驗證和存儲的開銷是巨大的,因為數據庫的每個副本都必須支付這些費用,而不是在傳統的集中式數據庫中一次支付這些費用。
當然,您可以通過減少節點數來減輕負擔。但是到那時,為什么您根本需要一個去中心化的系統?如果擴展成本是主要問題,為什么不僅僅建立一個中心化的數據庫呢?中心化化要容易得多。
如果您注意到一個主題,那就是分布式系統很難使用,維護成本高,難以升級且難以擴展。集中式數據庫比區塊鏈更快,更便宜,更易于維護和升級。那么,為什么人們繼續使用“區塊鏈”一詞來解決所有問題呢?
大多數行業都不是這樣。大多數行業需要新功能或升級,并且需要根據需要自由更改和擴展。鑒于區塊鏈難以升級,難以更改且難以擴展,大多數行業對區塊鏈的使用并不多。
但我們發現的只有一個東西例外——金錢。
與大多數工業用例不同,如果不進行改變,錢會變得更好。不可變性和更改規則的困難對金錢是有利的,而不是不利的。這就是為什么就比特幣而言,區塊鏈是完成這項工作的正確工具的原因。
顯而易見的是,許多希望使用區塊鏈的公司實際上根本就不需要區塊鏈,而是將IT升級到其特定行業。一切都很好,但是使用“區塊鏈”一詞到那里是不誠實的,并且超出他們能力。
結論
如今,區塊鏈是一個流行的名詞,不幸的是,這種“想要區塊鏈而非比特幣”的思維模式并不會消失。如果您是中心化的服務,則區塊鏈無法為您提供任何您無法使用集中式數據庫便宜一千倍的東西。如果您是去中心化服務,那么你可能會自欺欺人,而不考慮系統中存在的單點故障。真正的去中心化服務根本不會有“你”。
早在2000年代初期,技術行業的許多高管就開始推動使用Java和XML。盡管這兩種語言是工具,而不是實際產品,但無論他們的工程師想要達到的目標多么糟糕,許多高管仍堅持使用它們。區塊鏈非常像當時的那種情況。專注于你要解決的問題,這些工具將使自己變得顯而易見。專注于您要使用的工具,最終您將制造出性能不佳的Rube Goldberg機器。
從某種意義上說,當前的區塊鏈概念正在試圖做不可能的事情。他們希望在中心化系統的控制下實現分布式系統的安全性。欲望是兩全其美的,但他們最終得到的卻是兩敗俱傷的。通過集中式系統的模式,你會得到分布式系統的成本和困難。
大量使用區塊鏈作為流行語來出售大量無用的毒藥。我們擺脫炒作的速度越快,長期的發展就越好。
責任編輯;zl
評論
查看更多