區塊鏈是什麼通俗解釋?為什麼大家將區塊鏈複雜化、神化,要認真審視某些問題,有幾個要點先要理解:什麼是區塊鏈?它到底是什麼?當中有許多混亂之處。許多企業使用"區塊鏈"這一術語,意思就是說它是魔幻裝置,所有資料永遠不會出錯。當然,這樣的裝置根本不存在,至少在真實世界不存在。
什麼是區塊鏈?從技術上講,區塊鏈就是區塊連成的鏈條,一個區塊存放一些有序的交易資訊。如果你還是不理解,可以將區塊鏈看成資料庫的子集,只是多了一些特色。
區塊鏈與普通資料庫最大的不同就是它有一套特殊規則,規定如何將資料儲存到資料庫。存入的資料不能與資料庫中其它的資料發生衝突(共存性),只能新增(不可變性),資料與資料主人是鎖定的(所有性),它可以複製。資料庫沒有中央機構管理(去中心化),這點是大家都認同的。
我們可以說,"去中心化"是區塊鏈的聖盃。為什麼去中心化如此有魅力?因為它不會出現單點故障。換言之,沒有任何單一的權威機構可以拿走你的資產,改變"歷史".因為審計蹤跡不可變,所以你不需要相信任何人,這點正是大家所期待的。不過,雖然區塊鏈優點很多,但是要享受這些福利成本可不低。
區塊鏈的成本
要讓審計追蹤不可變,不被任何一方控制,需要打造一套系統,成本很高。
我從以下幾個方面來解釋一下:
--開發更嚴格更緩慢
開發一套可驗證的系統,保持一致,不是一件易事。只要有一個小小的漏洞,就會毀了整個資料庫,或者導致某些資料庫與其它資料庫完全不同。損壞或者分裂的資料庫無法保證一致性。
另外,所有系統在設計時從一開始就應該是一致的。所以說在區塊鏈技術中,不能追求"move fast and break things "(快速行動,打破常規)。如果你破壞了,就會喪失一致性,區塊就會被摧毀,變得一文不值。
你可能會說,為什麼不修複資料庫,或者重啟,然後繼續前進?如果用的是中心化系統,要做到還算容易,去中心化系統就難了。改變資料庫必須得到系統內所有各方的同意才行。區塊鏈是公共資源,不被任何實體控制,緩慢打造中心化資料庫也是成本非常高的。
--設計激勵結構非常難
新增正確的激勵架構,確保系統參與各方不會濫用資料庫、破壞資料庫,這是一個重要的考慮因素。區塊鏈必須保持一致,如果裡面有許多無用、瑣碎的資料,區塊鏈就會變得不實用,因為將資料放入系統的成本是很低的。如果系統中沒有任何資料,將資料放入系統的成本就會很高,這樣的區塊鏈也是不一致、不實用的。
到底是什麼賦予資料最終特性?如何確保激勵與網路目標一致?為什麼節點會保留資料或者更新資料?當資料與資料發生衝突時,是什麼讓系統選擇一些資料,放棄另一些?這些問題都需要回答,從一開始就要協調好,未來,當技術或者企業變化時,必須確保區塊鏈繼續有效。
你可能會問:如果激勵機制出現問題,為什麼不能修復呢?再次強調,在中心化系統中,要做到不難,但是如果系統去中心化,那就不容易了,如果沒有取得一致同意,你不能修改任何東西。除非每一個人都同意,否則不能修改任何東西。
--維護成本很高
如果是傳統中心化資料庫,只需要再寫一次就行了。區塊鏈不一樣,它要編寫成千上萬次。傳統中心化資料庫只需要檢查一次就行了,只需要傳輸一次並儲存資料就行了。區塊鏈不一樣,它要傳輸成千上萬次。
維護區塊鏈的成本高很多,而且還要透過實用性來證明。正因如此,大多應用會提前考慮某些特徵,比如一致性、可靠性,這樣檢查、接收、備份時成本就會低一些。
--使用者至高無上
這是一件好事,因為企業不願意為使用者的資料承擔責任。不過也可能是壞事,如果使用者作惡就沒有辦法了。你沒有辦法剔除使用者,它會用瑣碎的資料損害你的區塊鏈,也可能會利用某些不當手段獲利,給其它使用者帶來不便。正因如此,我們才需要設立非常好的架構,即使某個使用者發現漏洞,也不會有什麼影響,因為無利可圖。
你可能會說,為什麼不拒絕服務惡意使用者呢?如果是中心化服務,要做到很容易。可惜區塊鏈不是中心化服務,拒絕服務是一件很難的事,因為沒有單一實體有權踢人。區塊鏈必須公正公平,必須執行軟體制定的規則。如果規則不足以剔除壞行為,那就糟糕了,因為裡面沒有法律。你只能與惡意者、行為不良的人打交道,可能需要花很長的時間。
--所有更新者是自願的
系統不會強制更新。網路的其它人沒有義務改變軟體。如果他們這樣做,那麼開發系統會更容易、更便宜、更快,就像中心化系統一樣。區塊鏈沒有受到任何單一實體的控制,所以它與強制更新存在衝突。
所有更新都是向後相容的。如果你想新增新東西會很難,從測試角度看更是難上加難。軟體每推出一個新版權,就會增加測試難度,釋出時間也會延長。
再次重申,如果是中心化系統,修改就會容易得多,不再使用舊系統就行了。區塊鏈系統做不到,它不是中心化系統,你不能強迫任何人做任何事。
--擴充套件是一件很難的事
與傳統中心化系統相比,要讓區塊鏈系統具有彈性相當難,難上很多很多。為什麼?原因其實很簡單。同樣的資料儲存在無數地方,不是存在一個地方。傳遞、驗證、儲存任務超級繁重,資料庫每出現一個複本,就要支付費用,如果是傳統中心化資料庫,支付一次就行了。
當然,你可以減少節點的數量,減輕負擔。既然如此,你為什麼要用去中心化系統呢,可以不用啊?如果你擔心的只是擴充套件成本,乾脆用中心化資料庫不就行了嗎?
--集中更容易一些
去中心化系統很難處理,維護成本很高,升級困難,擴充套件性差。如果是中心化資料庫,費用更低,維護更容易,升級也更容易。為什麼大家還要使用區塊鏈,將它當成解決所有問題的靈丹妙藥?
首先,之所以向某些行業推銷區塊鏈,是因為它們行業的基礎設施很久沒升級了。醫療保健行業的軟體相當糟糕。金融行業使用的軟體停留在70年代。供應鏈管理軟體既難安裝,又難使用。來自這些行業的大多企業不願意升級,為什麼?因為有風險。有時投入巨資升級基礎設施,結果發現不行,只能回退到過去。區塊鏈可以推動IT基礎設施升級,讓升級變得更有吸引力。
其次,區塊鏈能讓你覺得自己很領先。真正理解區塊鏈的人很少,他們使用這個術語,只是因為聽起來更聰明。我們使用"雲端計算"來談論別人的計算機,"AI"的意思就是說調整演算法,至於使用"區塊鏈"這一術語,就是說要使用很慢很貴的資料庫。
第三,大家真的不喜歡政府控制某些產業,希望確立一種不同於法律的裁決機制,它很慢,很貴。區塊鏈可以幫助行業擺脫政府監管。老實說,這種吹捧有點過頭。區塊鏈完全不與人衝突是不可能的。
許多人沒有真正理解區塊鏈的能力和成本,就大吹特吹。更糟糕的是,許多VC和高管將區塊鏈技術的細節和成本變得很抽象,因為我們刻意含糊其辭,區塊鏈能做什麼,不能做什麼,我們沒有講清楚。皇帝沒有穿衣服,大家都知道,但是不願意說出來。
區塊鏈帶來的益處
我們都知道,相對於中心化資料庫,區塊鏈是很貴的。之所以使用區塊鏈技術,唯一的原因就是去中心化。也就是說清除單一故障點,不讓任何人控制。
這樣一來,軟體和資料庫不能經常改變,甚至完全不改變。
許多行業不願意這樣。它們希望在必要時刻可以新增新功能,升級,可以自由改變或者拓展。因為區塊鏈很難升級,很難改變,很難擴充套件,所以區塊鏈對於大多行業沒有太多用。
只有一樣東西例外,那就是金錢。和大多行業不同,如果不變化,金錢系統會更好。規則不可變或者很難改變,對於金錢來說是一件好事,沒有任何損害。正因如此,談到比特幣時,區塊鏈才會成為最適合的工具。
有許多企業想使用區塊鏈技術,但它們實際上並不是真的想要區塊鏈,只是想給行業IT基礎設施升升級。很好,但是如果非要扯上"區塊鏈"這個術語,就有點不誠實了,而且過度誇大區塊鏈的能力。
結論
在今天的世界,區塊鏈已經成為流行術語。如果是中心化服務,中心化系統不能做的事區塊鏈也做不到,而且開發中心資料庫成本要低很多很多。如果是去中心化服務,你可能會欺騙自己,不去思考系統中存在的單點故障。在真正的去中心化服務中,根本不存在真正的"你".
回看2000年代初期,科技行業的許多高管都說要使用Java和XML.它們都是工具,不是真正的產品,但是許多高管還是向兩種技術的使用投入巨資,雖然技術本身與工程師想達到的目標完全不匹配。區塊鏈有點相似。專注你所要解決的問題,工具會自然而然冒出來。如果你盯著自己想使用的工具,最終造出的只是古怪的東西,沒有任何實際用處。
我有一種感覺:從概念上看,目前的區塊鏈技術似乎想做不可能的事情。它們想變成安全的去中心化系統,由集中權力控制。這樣的構想似乎想將兩個世界的優點結合在一起,但是最終兩邊都不會好看。去中心化系統的成本劣勢與開發難度會體現出來,中心化系統的出錯模式也無法避免。
區塊鏈術語有點使用過度,許多人打著區塊鏈的牌子招搖撞騙。越早遠離炒作可能越好。