官术网_书友最值得收藏!

第一章 從應用的角度理解區塊鏈

應用視角下的技術核心與特點

拋開解讀比特幣和區塊鏈的概念,讓我們回到區塊鏈技術本身,嘗試從底層理解區塊鏈的運行機制,正視區塊鏈發展的技術核心與技術特點,為進一步利用區塊鏈奠定基礎。在本節的技術介紹過程中,我們依然會從問題和對技術的理解出發,避免過多地描述技術細節。

1.核心技術

從一定程度上說,區塊鏈技術并不是一個完全獨創的新技術,它本質上是密碼學與計算機的技術集合,是對技術應用的創新組合。在本節,我們將按照情況、沖突、疑問與回答的金字塔結構,為大家解釋區塊鏈需要面對的問題及其解決方案。

(1)密碼學:創建唯一標識

情景:重要的唯一性

賬戶:我們在注冊網絡賬號時都需要創建一個賬戶名稱。通常情況下,新建的賬戶名稱在注冊網站中要具有唯一性。隨著注冊用戶逐漸增多,比較流行的名字就會被反復注冊,后注冊的用戶只能在賬戶名上增加特殊的標識,大家申請的賬號也會越來越獨特。接著我們就會在網站中看到“大帥哥666@007”。

密碼:現在全中國有1300人知道你的銀行卡密碼,你也許會想這怎么可能,我的密碼設定既不是我的生日,也不是門牌號,怎么可能會有這么多人知道?那就讓我們一起做個數學運算。通常情況下,每個人的儲蓄卡密碼都是由6位數字組成的,而由6個數字構成的密碼最多有106種組合,也就是100萬種可能。從概率論的角度,理論上每100萬個人就會有一個人和你使用相同的密碼。按照現在全中國13億人口核算,就會有1300人的密碼是相同的。

好吧,既然我們的密碼會出現這么多重復,銀行為什么不增加幾位,或者像賬號信息一樣,加上字母大小寫、特殊符號呢?事實上,我們完全沒有必要這么做,因為銀行會幫助我們管理密碼,它會限定用戶輸入錯誤密碼的次數,防止有人通過不斷嘗試的方式破解密碼。

沖突:“去中心化”的唯一性

在賬戶和密碼的唯一性驗證過程中,大家也許會留意到一個關鍵點:作為第三方企業的“中心化”機構對于維護信息唯一性的作用十分關鍵。在銀行密碼重復的案例中,銀行可以保證即使密碼的數字范圍很小,黑客也沒有辦法通過實驗找到正確的密碼。

試想一下,在區塊鏈的“去中心化”模型中,是沒有一個“中心化”的機構會告訴你賬戶是否會重復,同時幫助用戶限制黑客嘗試破解賬戶密碼的次數,這實際上給區塊鏈網絡的正常運行帶來了很大的麻煩。

疑問:在沒有管理員的網絡中,如何找到一種創建唯一性標識的方法呢?

回答:哈希(Hash)函數

在密碼學中,把相同函數生成的結果出現重復的難度,稱為碰撞阻力。函數生成的結果越難出現重復,越說明函數結果的碰撞阻力大。而哈希函數就是一種能夠生成具有較高碰撞阻力的函數。

Hash一般翻譯為“散列”,也可以音譯為“哈希”。哈希函數能夠把任意長度的輸入(又叫預映射)通過散列算法,變換為固定長度的輸出。實際上,由于哈希函數的輸入值是無限多的,但是輸出的結果卻是有限的。在一定程度上,哈希輸出值可能是相同的,但是概率卻非常小。舉個例子,哈希函數計算出兩個相同哈希值的概率,相當于人類社會制造出的所有計算機,從宇宙誕生之日起就開始計算,并一直計算到今天,在所有結果中找到兩個碰撞值的概率依然趨于無窮小。

哈希函數的這個特征完美解決了區塊鏈對于信息唯一性的要求。不管是在區塊鏈區塊ID的生成過程中,還是在區塊鏈網絡中創建賬號或密碼,哈希函數的碰撞阻力都可以保證生成信息的唯一性。

(2)密碼學:快速驗證真偽

情景:證明信息可信

為了保證確認信息的來源和可信性,人類社會發明了很多防偽方法。尤其是在古代,前人創造了各種防偽技藝。

明清的晉商為了保證自家銀票不被偽造,專門發明了微雕印章,如圖1-1所示。微雕章的內容可以是幾百字的詩詞,也可以是圖畫。微雕雕刻的圖案都非常精細,需要很大的物力和高超的技藝才能完成。在雕刻的過程中,票號還會故意要求刻錯幾個字,保證每個印章都是獨一無二的。通過印章上預留的特殊符號,票號可以快速地辨認自家的銀票,并由此增加造假者的偽造成本,讓造假者放棄模仿的念頭。

圖1-1 明清時期蓋有特殊印章的晉商銀票

沖突:低效的驗證流程

隨著防偽技術的不斷發展,現代社會的防偽技術經過不斷的演變升級。與此同時,在互聯網時代,實物已經不再是唯一需要加密傳遞的對象,信息安全也變得尤為重要。例如,銀行為了確認交易方的身份信息,會為用戶發放專門的加密U盤。用戶在進行業務操作時,必須將U盤插在電腦上進行認證。同時,為了保證信息傳遞的安全性,銀行也會通過專門的網絡鏈路完成用戶客戶端與其服務器的交互。傳統互聯網模式下,信息的確認在一定程度上仍然需要第三方的輔助確認,流程也較為煩瑣。

在區塊鏈網絡中,所有信息的驗證都需要在網絡上進行自動確認,并且能夠在沒有第三方管理的情況下,在后臺自行完成信息的確認。

疑問:如何在不依賴第三方的情況下,快速確認信息來源、證明信息的內容沒有被改動呢?

回答:數字簽名與默克爾樹

為了快速驗證賬本信息,區塊鏈應用了兩個技術:基于非對稱加密的數字簽名和基于哈希函數的默克爾樹。

區塊鏈的數據簽名主要用于解決信息來源的確認問題。由于使用了非對稱加密技術,信息的加解密過程變相實現了信息來源的確認過程。大家熟知的加解密過程都屬于對稱加密,即一個密碼可以解開對應的密文。而非對稱加密過程將加密的密鑰分成了公鑰和私鑰。被公鑰加密的密文只能用私鑰進行解密,用私鑰加密過的密文只能通過公鑰進行解密。這種加密方法給信息的來源驗證提供了很好的手段。

在區塊鏈的加密過程中,信息的發布者會應用自己的私鑰對信息進行加密,而信息的閱讀者只能應用發布者對應的公鑰才能解開這段密文。此時,信息閱讀者不僅能夠讀取加密后的信息,還能夠證明這段信息一定是由發布者生成的,就如圖1-1中提到的保密章。

在區塊鏈網絡上存儲的信息并不是簡單的數字,而是包含用戶信息、賬號信息等額外數據的字符串。為了快速識別賬本中的數據是否篡改,基于哈希函數的默克爾樹被順勢提出。默克爾樹是一種二叉樹,它由一組葉節點、一組中間節點和一個根節點構成,如圖1-2所示。

圖1-2 默克爾樹

在樹的根節點上,區塊鏈上需要記錄的信息將被作為哈希函數輸入,由此生成的結果將繼續作為后續節點輸入,最終所有的輸入會匯集到樹的根節點,得到一個唯一的哈希結果。由于哈希函數的高碰撞阻力,一旦根節點上的輸入被人篡改,那么根節點的哈希結果也必然受到影響。這種模式一方面可以幫助用戶快速識別出默克爾樹中記錄的值是否被改變;另一方面由于在區塊鏈的鏈條上,每個區塊內的默克爾樹都是彼此相連的,因此這個影響會繼續向前序鏈條傳遞。黑客如果想篡改賬本記錄,不僅要更改一個區塊上的默克爾樹,還需要更改所有與之相連的其他區塊,極大地提高了惡意黑客的造假成本。

(3)計算機:分布共識機制

情景:保護網絡交易的可信度

2018年12月,中國人民銀行發布特急文件通知,第三方支付機構備付金賬戶將于2019年1月全部撤銷,最終由人民銀行接管微信支付、支付寶等機構的備付金賬戶。根據中國人民銀行的統計,截至2018年10月,支付機構存放在央行的備付金總額為9957億元人民幣,以85%的繳存比例計算,全行業備付金總額約在1.17兆元人民幣。據專家分析,以中國排名前兩位的第三方支付平臺支付寶和微信支付來說,兩個平臺產生的備付金大約在6000億元人民幣和4000億元人民幣。

僅僅從這些備付金中賺取利息,就能達到上千萬元人民幣。

其實備付金是網上購物的直接產物,也是保證交易共識的附屬產物,每個網購客戶都是備付金的供給人。每個客戶在網絡購物的過程中,會在下單后預先支付貨款給支付寶等第三方支付機構,等收到商品后再告知支付機構給商家付款,從付款到收貨的過程中預付的資金就是所謂的客戶備付金。

由此可見,備付金實際上是保證網絡交易能夠順序執行的基金基礎。它能夠通過第三方機構,保證交易過程的可信度:證明客戶具備支付付款的能力;保護商家能夠在發貨后收到貨款;保護客戶能夠在付款后收到需要購買的商品。實際上,第三方平臺將網絡交易的執行狀態由信息不對稱狀態變成信息對等的狀態。例如,商家可以得知客戶是否預付了貨款,客戶能夠得知商家是否發貨等。從本質上說,第三方平臺幫助網絡交易的參與方對業務執行的狀態達成共識。

沖突:去第三方的信息共識

在第三方平臺上,中心機構幫助用戶實現信息共識,它會負責將交易信息進行審核和記錄,保證信息不會被黑客惡意篡改,保證交易能夠在相互信任的狀態下執行。試想一下,如果沒有第三方平臺存在,由誰負責記錄賬本上的信息?很顯然,這個職責放到賣方或者買方都不合適。買方可以直接記錄自己已經付款,實際上錢卻打給了其他人;賣方可以記錄對方已經收貨,實際上商品并沒有生產。買賣雙方將在信息的可靠性和安全性上耗費大量的精力。

舉個更實際的例子,在沒有第三方平臺進行預付管理的區塊鏈網絡中,存儲信息的賬本對于信息的接受狀態很可能出現不一致,此時就會發生一個網絡支付中存在的經典問題——雙花問題。例如,你和商戶A要通過區塊鏈網絡完成交易,這時你手中只有100元錢,商品的價值也是100元。你發起一個購買商品的付款流程,把自己的100元轉給商家A。此時,你忽然動了歪腦筋,還想用自己的100元購買另一個商品,這時你可以立即再新建一個付款流程,把自己賬戶內的100元轉移到另外一個商家B。這就是一個典型的雙花問題,在一個去第三方的網絡中,你賬戶里的錢可以隨時消費,沒有一個管理機構會去檢查你的賬戶是否具有足夠的資金。理論上,原本只有100元錢的你,可以把這100元復制無數次后再進行交易。

疑問:如何在沒有第三方平臺的情況下,保證業務數據的一致性,避免雙花問題?

回答:分布式共識機制

共識機制,或者說共識機制算法是區塊鏈技術的核心算法,而分布式則是區塊鏈賬本分散管理的特性。技術上,區塊鏈中已經存在多達十余種共識機制算法。而在“鏈圈”中,區塊鏈共識更關注于要在多個參與方中實現快速、高效的信息同步。由此,基于拜占庭將軍算法的共識機制正在被更多的商業區塊鏈網絡所應用。

“拜占庭將軍問題”是一個經典的計算機理論問題,其本質是一個協議問題。它假設了一個場景,只有當拜占庭軍隊的將軍們一致決定在同一時間發起對都城的攻擊時,才能取得勝利。但問題在于各位將軍們都駐扎在不同的地區,需要通過信使傳遞信息,而且他們中還存在叛徒,可能惡意修改發起總攻的時間。為了解決這個問題,將軍們將把進攻時間寫在信件上,并蓋上自己獨特的圖章,然后再把信件傳遞給其他將軍,當信息在不同的將軍間傳遞后,最后會得到一封蓋有大部分將軍圖章的信件。這個信件就將成為將軍們獲取總攻時間的共識基礎。

存在于區塊鏈技術的拜占庭將軍算法就參考了這個流程,它通過信息背書的方式對網絡上的信息進行公證。每一個參與者的計算機中都會存儲一份總賬,每個人都能在信息得到確認后,在總賬上記錄一筆信息,并由計算機網絡完成對信息進行實時、持續的更新。讓不同的參與者賬本進行實時的核對認證,快速共享信息,將不可信的分散網絡轉變為一個可信網絡。

Tips:拋開技術理論,從應用的角度來看,分布式共識機制本質上是一種信息驗證與記錄技術,它能夠將每個商業參與者的交易賬本信息快速地同步給所有的參與者,對于以管理商務流程的區塊鏈網絡來說,效率也是最重要的指標。大家也許聽過TPS(Transaction Per Second)的概念,即系統每秒內能夠處理的交易總量,不同的共識算法對于TPS的影響非常大。而更高的交易處理能力,對于區塊鏈網絡能夠承載的商業場景具有決定性的影響。一個未經優化的區塊鏈平臺,交易處理能力通常在每秒千筆左右。這個承載能力對于一般的交易場景還算中規中矩,但是相對于Visa支付網絡或其他電商平臺支持的交易量,還是很難滿足要求的。這也是現在不同區塊鏈技術平臺不斷提升其交易量處理能力的原因。

(4)計算機:巧設運行機制

情景:萬事俱備

我們分析了構成區塊鏈的3個關鍵技術點:用哈希函數的唯一性和整齊性保證了底層數據的組織結構;利用非對稱加密解決了身份認證問題;利用默克爾樹保證了鏈上數據不可篡改;通過程序設定信息確認機制,保證在網絡中只有一個共識結果。圖1-3展示了這幾個關鍵技術點已經能夠支撐起區塊鏈的運行模式,但是單純從商業應用的角度來看,區塊鏈網絡的順利運行還需要創新式商業規則的支撐,從一定程度上來說,正是創新式地設定了區塊鏈的運行規則,成就了區塊鏈網絡,也揭開了所謂生產關系變革的大幕。

圖1-3 區塊鏈的核心技術

沖突:數據的防偽與防變

細心的讀者可能發現了商業區塊鏈網絡存在一個問題。一旦被記錄到區塊鏈賬本上的數據是很難被篡改的,是能夠“防變”的數據。但是如果上傳到賬本上的數據本身就是錯誤的呢?區塊鏈如何甄別數據來源的正確性呢?如果賬本上記錄的都是錯誤或虛假的數據,區塊鏈網絡又何談可信呢?

問題:在數據真實性無法得到驗證的情況下,如何保證區塊鏈網絡數據的真實性呢?

回答:端到端的信息鏈條

在推進區塊鏈技術與商業場景結合的過程中,我們曾經遇到很多實際業務問題。其中有一個非常典型的問題,即防止虛假數據被傳遞。針對這個問題大家通常會給出使用物聯網(Internet of Thing,IoT)設備,建立物聯網完成對事物信息的追蹤,保證信息上傳的真實性。這當然是實現信息防偽的理想手段,例如,通過安裝GPS設備能夠追溯車輛的位置信息,安裝基于AI的圖形識別設備可以鑒別產品特征(在有些生鮮產品的追溯過程中,部分商家采用AI識別不同生物的面部、聲音等特性)。

其實,區塊鏈防偽的關鍵在于其形成的商業網絡將逐步趨向于一個完整的業務鏈條。

區塊鏈建立的商業網絡與傳統信息傳遞技術的核心區別在于其打破了點對點的企業合作模式。這種模式把傳統的關注于企業內部的信息集成,轉變為關注與外部合作伙伴共同建立信息共享網絡。因此,區塊鏈網絡上存儲的數據是貫穿整個商業流程的關鍵階段數據。這些數據將記錄一個交易從發生到結束的端到端的信息鏈條。在這個鏈條上,產品的相關數據可以快速地進行查證。

與傳統的分段的數據傳遞方式相比,在區塊鏈網絡上查找數據將更高效、更統一。例如,在食品供應鏈追溯的場景中,區塊鏈網絡可以建立一個基于實物產品條形碼的追溯信息鏈條,把產品在出廠、運輸、分銷等環節的狀態信息都存儲在區塊鏈賬本上。因此,單獨在一個環節進行信息造假的成本將逐步提高,其傳遞的信息由孤立的企業內部記錄,轉變為信息鏈條的一個環節,從而必須與其他環節進行匹配。區塊鏈網絡的價值鏈條如圖1-4所示。

圖1-4 區塊鏈網絡的價值鏈條

2.技術特點

在了解區塊鏈的核心技術點后,我們可以發現區塊鏈技術本質上就是一個“去中心化”的加密數據庫,是分布式數據存儲、共識機制、加密算法等計算機和密碼學技術的新型應用模式。基于上述核心技術,我們將進一步介紹區塊鏈的技術特點,如圖1-5所示。

圖1-5 區塊鏈技術特點

Tips:此處,我們將區塊鏈技術解釋為加密數據庫,是單純從存儲數據的角度進行通俗介紹。實際上,區塊鏈更應該被解釋為數據源。區塊鏈的賬本并不具備數據庫的數據管理功能,或者說需要進行額外的開發。其賬本應該成為其他業務領域挖掘數據價值的源頭,讓賬本數據提供數據服務。

(1)分布式

區塊鏈通過分布的各個節點對數據進行驗算和存儲,保證數據的一致性,有別于傳統的數據儲存方式,分布式存儲不會因為中心數據節點受到攻擊而影響數據的安全性和完整性。區塊鏈中每個節點的權利和數據信息都應該是相等的,區塊鏈系統的運轉和維護由這些鏈上的節點共同完成。

(2)開放性

整個區塊鏈平臺是公共、公開的,任何人都可以通過相對應的接口來進行訪問和查詢。每個區塊中除了部分敏感數據會被加密無法正常讀取外,所有的信息對所有的訪客開放。

(3)自治性

區塊鏈平臺通過使用一種能使各個節點達成共識的規范或協議(例如共識算法),使各個節點之間能夠快速達成共識,不會因為某一個節點報錯或被攻擊而影響整個區塊鏈的運行,消除或減弱“人”在整體架構中的影響。

(4)信息不可篡改

區塊鏈中的交易一旦通過數據驗證,就會被各個節點永久地儲存起來。因為各個節點之間具有共識特性,除非能夠同時控制超過區塊鏈中51%的節點數,否則單一節點的數據修改無法影響到整體的數據,保證數據無法篡改,提高數據的穩定性和可靠性。

(5)匿名性

由于各個節點所包含的規則會判斷數據的正確性,所以各節點之間的數據交互不需要交易雙方公開驗證自己的私鑰來提高交易的信任度,確保交易雙方的隱私安全。

主站蜘蛛池模板: 汝城县| 荣成市| 大渡口区| 璧山县| 祥云县| 普兰县| 商南县| 龙州县| 巩义市| 福州市| 昌乐县| 抚远县| 伊金霍洛旗| 利津县| 马公市| 班玛县| 栖霞市| 波密县| 开化县| 陵水| 徐闻县| 包头市| 乃东县| 林口县| 绥滨县| 荆门市| 碌曲县| 安新县| 武陟县| 海原县| 安义县| 梧州市| 宜川县| 襄垣县| 嫩江县| 阳高县| 肥东县| 上高县| 黎平县| 乌恰县| 曲松县|