前不久,踢球的時候把腳傷了,手術后綁著石膏在家呆了一個多月。這段時間公司老板體諒,在家辦公,活也不多,落得輕松自在。有一次,看微信朋友圈的時候,無意間看到朋友提及區塊鏈。之前也聽過,當時沒提得起興趣去打聽打聽到底是個什么新鮮玩意。這下閑來了點興致。不打聽吧倒也罷了,一通了解下來,發現這東西現在火熱得是從東到西、從南到北。
至于說區塊鏈到底有多火,網上有很多的文章在說,區塊鏈是多么革新、革命性的技術,可以如何如何地提高現有系統、業務,可以應用在社會應用的各個方面,等等。還說到,有多少多少的相關初創公司,有多少多少的投資,將產生多大的市場,等等。一直以來,我都沒有一個確切的標準來判斷一個新東西到底好不好、火不火,反正看了這么多的文章,我感覺火。于是,我找了些技術資料,想好好了解一下區塊鏈到底是什么,說不定還可以和和稀泥。
從一開始,我就在想:區塊鏈是什么?
大多數的定義都說區塊鏈是分布式賬本。我就好奇了,賬本那不是財務管的東西嗎,為什么說可以運用到各行各業?另外,提到分布式,那就要問了,和集中式有什么區別?有什么不同目的?接著,我得到了這樣的回答:分布式賬本的目的是為了去除第三方、中心化的單點控制,解決第三方、中心化的信任危機,從技術層面使得整個系統更加相互信任、更好地協作。區塊鏈呈現出來的基本特點就是:協作式防范非信任用戶,防止數據篡改。
其實,看到這樣的回答,我更迷惑了。什么是信任危機?現在的業務怎么篡改數據?技術上如何實現協作式(分布式)?。。。結合比特幣,我能想到的、可能的信任危機就是央行超發貨幣。其它的場景,比如保險公司作弊、銀行挪用資金、證券經紀耍賴,等等,我都想象不出這其中的信用危機到底有多大,有多大的緊迫性需要區塊鏈來拯救。
帶著這些困惑,我進一步了解:區塊鏈技術到底是什么樣的?
區塊鏈技術起源于中本聰的比特幣(BitCoin)系統。主要包括:用戶管理(加密技術)、共識機制(協作)、賬本管理(一致性存儲)、業務合約管理。也有其它一些解構方式,大同小異。用戶管理主要是采用各種不同的加密技術、方案驗證、保護用戶身份,這個應該和現在很多系統中的用戶管理類似。共識機制是區塊鏈中最核心的模塊,是所有系統參與者共同協作完成任務的行為規則,以保證分布式系統的正常運行。我個人理解,區塊鏈中用戶管理的最主要目的是甄別用戶的可信任度,以此來搭配不同的共識機制,實現不同的區塊鏈系統,滿足不同的業務應用。舉個例子,比特幣系統或者以太坊(Ethereum)中,用戶可以隨意加入、離開,不需要(也不必要)對用戶身份進行嚴格管理,用戶的可信任度不高,或者說不可信任。需要配合特別的共識機制,才能保證系統的可靠運行。業界把這類系統稱為公有區塊鏈。因此,在這些系統中,采用PoW這樣的經濟博弈共識機制。與之不同的例子,就是聯盟鏈、私有鏈,如Hyperledger的Fabric,系統中的用戶通過嚴格的加密認證機制,確保具備一定的可信度,配合Paxos、Raft、拜占庭等等共識機制,避免了PoW機制的資源浪費,同時提高了系統運行效率(如:單位時間處理交易的數量)。在私有鏈中,由于用戶可信度更高,甚至可以采用更激進的共識機制。
賬本管理是如何管理系統中交易記錄(數據)。首先,通過共識機制生成區塊(Block),然后將交易數據存放的區塊中、發送給所有的系統用戶。用戶對區塊進行驗證后,將區塊添加到以前區塊的尾部,形成本地區塊鏈(Block Chain)。因此,每個系統用戶都保存一份完整的系統區塊鏈,并且所有用戶的區塊鏈內容都一致。通過Merkle Tree機制驗證區塊鏈數據的有效性,防止篡改。我個人認為,每個系統用戶保存一份完整的區塊鏈賬本,其實是對存儲資源的極大浪費。同時,區塊要傳輸給所有用戶,也是對網絡帶寬資源的極大浪費。聽說有SPV機制,后續會研究一下。
業務用戶可以通過業務合約管理自定義業務邏輯,并部署在區塊鏈系統上。底層的區塊鏈系統確保合約的正確執行,以及保證業務數據的真實可靠。
通過上面的技術了解,又迫使我使勁地想:區塊鏈到底是什么?要解決什么問題?基于我目前有限的了解認識,我想初淺地說說我個人認識的區塊鏈的是與不是。
區塊鏈到底是什么?
首先,區塊鏈是一個可信任系統。區塊鏈的目的是建立信任,或者說防止作惡(包括失效)。加密認證的用戶管理、分布式的共識機制、鏈模式的交易數據管理等等,都是搭建該信任系統的具體技術手段。目的是為了提供一個可信任系統應該具備的基本特征:用戶行為合法,用戶數據真實有效。換句話說,如果所有用戶及其行為都是可信、合法的,也就沒有區塊鏈什么事了。
其次,區塊鏈是一個可信任的業務平臺。這里就要說到區塊鏈中的智能合約。區塊鏈系統提供給業務用戶一個可信任的平臺,用戶可以開發、定義、部署自己的業務邏輯合約。區塊鏈系統保證正確、真實、有效地執行該業務合約。因此,我個人更傾向于將智能合約從區塊鏈中分離出來。
再次,從數據(data)生命周期看,數據經歷:產生,存儲,計算(被使用),再生產,再存儲,再計算...。當前的大數據、人工智能是在利用數據進行分析、挖掘,是數據計算、被使用。存儲系統用于存儲數據,但并不解決(也不應該解決)數據被篡改等應用相關問題。而數據的產生則處于一個無序的狀態,任何數據都可以被寫入系統并進行存儲、計算。寫入數據是否有效、合法不得而知、也無法保障。因此,區塊鏈是在試圖解決數據產生的合法性和存儲的真實有效。合法性是指數據的生成是經過系統大多數認可并同意的。這一點也許將來能反饋到數據計算的環節,提高計算的有效性。
區塊鏈不是什么?
首先,區塊鏈不是一個分布式系統(或者分布式賬本啥的)。對比分布式和去中心化的說法,我更傾向后者。為什么這么說,大家可以仔細想想什么是分布式系統,有什么基本特征。粗淺通俗的說,分布式系統能夠將一個任務分割成若干小任務,協同、并行地在系統中進行調度執行。所以,任務分割、多任務并行是分布式系統的基本功能。分布式系統中的資源越多,其性能、容量會隨之增加。再看區塊鏈,雖然其共識算法是基于分布式協作,但是該系統并沒有提供分布式的基本功能。整個區塊鏈系統通過協調合作,目的是完成對單一區塊鏈(Block Chain)的合理、可信、有效的操作控制。這更像是多進程協作中的一種鎖機制。增加用戶資源,并不能擴展這個系統的性能容量。相比來說,區塊鏈是去中心化系統的說法更合理些,但是也有局限性。去中心化是區塊鏈目前的一種表像,目的是增加信任、防范單點失效現象發生。但是,中心節點是否應該去除、能否存在于區塊鏈中,如何存在,這些問題都還在爭論中。隨著聯盟鏈、私有鏈的發展,我想去中心化這個概念也會被挑戰。
通過上面的學習和認識,我在想,區塊鏈可以應用到哪些方面呢?
如果我們都同意說,區塊鏈是一個可信任系統。順理成章,區塊鏈最應該被應用到那些對信任高度依賴的業務,如金融、版權、征信等。按照這個邏輯,那些并不依賴信用的行業,根據業務需求應該有更多的技術選擇。從另一個角度來說,區塊鏈的出現驅動了更多行業進行數字化、信息化升級,從而提高效率、降低成本。之后肯定會出現更多的技術供市場選擇。
從目前的區塊鏈技術來說,應該分為兩大類。一類是代幣式區塊鏈,如比特幣、以太坊等等;另一類是非代幣式區塊鏈,如Fabric、小蟻、騰訊等等。兩者區別其實挺大了,我相信發展方向和應用場景也會有很大的不同。騰訊剛發布了白皮書,表明了非代幣式區塊鏈的立場。我個人也比較看好這一類。等我進一步學習后,再具體聊這一塊。
先聊到這里吧,我也是剛開始學習沒多久,認識理解上有局限,歡迎更多的討論、爭論。后面會深入學習區塊鏈的技術,到時候再分享學習心得。