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

區塊鏈和區塊鏈應用的典型架構

有了上述對區塊鏈的“盲人摸象”式解構理解,我們來看看區塊鏈實際上是什么樣的,以及區塊鏈應用究竟是什么。

和任何其他計算機科學一樣,區塊鏈技術和應用的成長也是一個“螺旋曲折上升”的過程,這個過程中難免會出現認知偏差,甚至是普遍性的誤區。針對信息科技有一種普遍的說法,“我們對其價值總是在短期內高估,卻在長期里低估”,區塊鏈同樣如此。

專用功能的區塊鏈

典型代表:比特幣、各種比特幣分叉幣

世界上第一個區塊鏈是在比特幣中實現的,比特幣設計的最初目標是在網上實現一個“點對點的電子現金”,因此不需要中間人是其基礎。

在比特幣出現之前,類似希望在網上個人之間收發現金的需求已經出現很久。例如,PayPal(貝寶)通過電子郵件的方式發送現金,但實際上它要基于PayPal本身作為中間人;銀行內部及銀行之間的轉賬等都依賴銀行作為中間人。采用P2P和加密技術來發送現金一直是極客、黑客和計算機科學家多年來嘗試的方式。但在比特幣出現之前,還沒有人能夠解決其中最關鍵的“雙重花費問題”,即同一筆錢被花費兩遍——想一想同一份信息在互聯網中復制傳播是多么容易,且很難阻止。

比特幣的設計可以被認為是一個單一系統精巧設計的典型。從結構角度而言,比特幣是一個簡單的區塊鏈技術,也是一套基于區塊鏈技術之上的、很簡單的數字貨幣協議,同時也實現了一個名為比特幣的應用,可以被認為是一個“多合一”的一體化系統。比特幣的設計沒有提供外部擴展和可編程能力,雖然比特幣支持一種非常簡單的腳本,但是并不具備完整的編程能力和擴展性,比特幣本身也沒有對外的編程APIAPI(Application Programming Interface,即應用程序編程接口),是一些預先定義好的函數,目的是提供應用程序以及開發者基于某軟件或硬件得以訪問一組例程的能力。支持。總而言之,比特幣系統的設計就是為了實現比特幣本身,沒有其他目的。在比特幣發展過程中,一度有一些如“染色幣”這樣的技術,試圖在比特幣的數據結構里的“空閑”區域加載結構化的數據,從而使比特幣具備表達其他數字資產的能力,但顯然比特幣社區排斥這種改造,并在后續比特幣軟件的升級中限制了這種做法。

區塊鏈分叉

區塊鏈分叉主要是指一條區塊鏈分開成兩條區塊鏈。分叉可分為意外分叉和有意分叉。當兩個或以上的礦工在幾乎相同的時間成功挖到區塊時,便會出現意外分叉。有意分叉則是對原區塊鏈做出修改,可再分為硬分叉和軟分叉。

硬分叉之中新分叉所產生之區塊將被舊軟件視為無效。因此,所有參與者,包括交易服務器以及礦工(節點)都必須更新軟件,才能繼續運行新分叉。如有節點繼續使用舊軟件,而其他節點使用新軟件,便有可能分裂成兩只貨幣。

與硬分叉相比,軟分叉所產生之區塊能夠被舊軟件識別為有效區塊,即區塊向下兼容。然而,舊軟件所產生之區塊未必在新規則下有效。

功能可擴展的區塊鏈

典型代表:以太坊、R3 Corda,以及同期其他公鏈和聯盟鏈

以以太坊為代表的公鏈最大的特點是可編程和可擴展。由于比特幣是一個專用功能的區塊鏈,在以太坊出現之前,擴展比特幣功能的唯一辦法就是復制其開源代碼進行擴展,這就是所謂的“分叉幣”。基于比特幣出現過數百個知名或不知名的分叉幣,大部分已經消失了,少數仍然存在,甚至一度和比特幣競爭。分叉開源的代碼雖然容易,但運行維護起來很困難,尤其比特幣基于工作量證明的設計需要相當的算力支持才能維持區塊鏈的安全運行,各個分叉幣分散了本可集中的算力,使得這些分叉幣都很難成氣候。

算力

算力也稱哈希率,是比特幣網絡處理能力的度量單位,即計算機計算哈希函數輸出的速度。比特幣網絡必須為了安全目的而進行密集的數學和加密相關操作。例如,當網絡達到10TH/s的哈希率時,意味著它可以每秒進行10萬億次計算。

在通過挖礦得到比特幣的過程中,需要找到其相應的解m,而對于任何一個64位的哈希值,要找到其解m,都沒有固定算法,只能靠計算機隨機的哈希碰撞,而一個挖礦機每秒鐘能做多少次哈希碰撞,就是其算力的代表,單位寫成hash/s。

以太坊的出現很大程度上解決了這一難題,通過智能合約這種代碼形式,相當于在以太坊上能夠創建各種各樣的新功能。這樣一來,以太坊的功能在理論上可以無限擴展,開發者不需要分叉以太坊,就能直接部署自己的智能合約,來給以太坊擴展自己所需要的功能,而且開發者不需要建立新的區塊鏈網絡,甚至不需要建立自己的節點,這大大提高了區塊鏈開發的效率。

即使在聯盟鏈或私鏈的環境下,這種功能擴展能力也非常有價值。例如,用戶打算運行一個私鏈版本的比特幣系統來支持自己的區塊鏈應用,鑒于比特幣是功能特定的,如果應用業務和比特幣是相類似的,那么可能還比較容易,如果應用業務與比特幣差別較大,可能就會令用戶一籌莫展。采用以太坊這樣的可擴展區塊鏈,即便是部署私鏈或聯盟鏈的版本,也可以通過部署智能合約來擴展業務所需功能。以太坊最初是作為公鏈誕生的,但不久“企業以太坊聯盟”(EEA)隨之誕生,其成員包括以英國石油、摩根大通、微軟為首的能源、金融和IT界的全球性企業,致力于將以太坊開發成企業級區塊鏈平臺。摩根大通更是在以太坊開源代碼基礎上開發了自己的區塊鏈技術Quorum,成為其穩定幣JPM Coin的技術基礎。

以太坊的成功引來大量效仿者,目前市場上大部分公鏈和聯盟鏈都屬于這種功能可擴展型區塊鏈架構。

模塊化的區塊鏈架構

典型代表:Hyperledger Fabric、ArcBlock、Libra等

以太坊等可擴展區塊鏈雖然支持擴展,但其本身是一體化的設計和實現。這對公鏈類型的設計而言可能無可厚非,但對于企業聯盟鏈和私鏈,或者想在原有基礎上做更大功能擴展的新公鏈而言,一體化設計就會出現問題:無論你的應用實際需要多少功能,你都必須部署完整的區塊鏈軟件,哪怕實際上你只需要用其中一小部分。如果你想替換一部分功能,例如你想使用以太坊的軟件,但并不想采用工作量證明的共識算法,那么沒有簡單的辦法能做到。這也是為什么會出現多種以太坊的企業版本分叉,而一旦有了版本分叉,在維護上就會碰到新的問題。

Hyperledger Fabric可能是第一個在市場上宣傳采用模塊化設計的區塊鏈。其官方介紹稱,“Hyperledger Fabric由模塊化架構支撐,被設計成支持不同的模塊組件直接拔插啟用,并能適應在經濟生態系統中錯綜復雜的各種場景”。Hyperledger Fabric提供了多個可拔插選項,賬本數據可被存儲為多種格式,共識機制可被接入或者斷開,同時支持多種不同的成員管理機制。

作為更進一步采用模塊化設計和簡化開發者使用的區塊鏈,ArcBlock的區塊鏈框架則設計實現“一鍵發鏈”的模式,通過提供一系列的工具,讓開發者通過友好的界面就可以立刻定制符合其需要的區塊鏈。最新的Cosmos SDK和Polkadot的Substrate框架都采用了類似的設計。臉書推出的Libra區塊鏈項目也采用了模塊化設計的思路,使得社區可以更容易加入擴展。這種把區塊鏈模塊化的架構,正成為區塊鏈最先進一代的設計和實現趨勢。

主站蜘蛛池模板: 郑州市| 贵溪市| 高阳县| 通海县| 云龙县| 和田县| 尉氏县| 谢通门县| 温州市| 博湖县| 胶州市| 怀安县| 新干县| 平定县| 建瓯市| 兴文县| 略阳县| 平塘县| 呈贡县| 乃东县| 玛曲县| 博乐市| 拉萨市| 邻水| 沈丘县| 惠安县| 婺源县| 麻江县| 日土县| 晋江市| 吕梁市| 平山县| 东乡族自治县| 新乐市| 仁布县| 威海市| 佳木斯市| 库伦旗| 新龙县| 平潭县| 昭通市|