文章將嘗試從區塊鏈技術本質、技術架構、發展方向三個角度對區塊鏈技術進行剖析,揭開區塊鏈技術的神祕面紗,探索真正能夠給傳統行業帶來價值的商業落地場景。本文作者 Raymond 是 Ultrain 資深技術專家,曾於近期發現 EOS 底層可導致 EOS 全網宕機隱患的致命安全漏洞,並將問題及修復方法提交至 EOS,獲其官方致謝。

撰文:Raymond,Ultrain 資深技術專家,前摩托羅拉高級軟件開發工程師

自比特幣誕生起,區塊鏈技術發展至今十年有餘,不斷吸引資本與技術的關注並保持熱情不退,大量資金與技術研發的持續投入推動着該技術的快速發展與演進,尤其是隨着近幾年區塊鏈技術的落地生根,區塊鏈成爲繼互聯網之後重大技術變革的商業期望正開始逐步實現。

正如互聯網在各行業的應用與融合,人們相信區塊鏈技術的去中心化、賬本的不可篡改等特性亦可對傳統行業產生顛覆性革命,區塊鏈從業者開始探尋傳統行業與區塊鏈技術的結合,從而產生了跨境結算、供應鏈金融、數字資產確權、版權存證、商品溯源等落地應用。

本文將嘗試從區塊鏈技術本質、技術架構、發展方向三個角度對區塊鏈技術進行剖析,揭開區塊鏈技術的神祕面紗,探索真正能夠給傳統行業帶來價值的商業落地場景。

區塊鏈技術本質

區塊鏈不是萬能的,只有理解了區塊鏈技術的本質,才能去僞存真,發掘適合區塊鏈技術優勢的應用場景,真正爲傳統行業創造新的商業價值。區塊鏈的技術本質,其最核心的有如下三點:

聽剛發現 EOS 重大漏洞的專家談談,區塊鏈的技術本質是什麼?圖 1 區塊鏈技術本質

1 去中心化平臺帶來的天然信任

區塊鏈技術與生俱來的天然信任,既不是各種共識算法賦予的,也不是隻能增加不能修改的公共賬本技術帶來的,而是來自於平臺不受任何單一主體控制,人人可隨時參與隨時退出的特質。分佈式存儲、點對點網絡以及各種共識協議等軟件技術,都是爲了使去中心化的平臺能正常運行。平臺運行結果由平臺參與者達成共識形成。同樣,對這個平臺的修改更新,也要求平臺參與者達成共識。套用「流浪地球」的一句臺詞,在區塊鏈時代,共識是比鑽石還珍貴的東西。

區塊鏈的天然信任還依賴於其所運行軟件的開源特性,任何人都可以檢查源代碼,編譯運行成爲平臺的一個節點,參與平臺的運行。去中心化軟件技術帶不來天然信任,信任來自於這個開源的運行平臺不受任何一方控制,任何一方不能隨意修改系統運行結果,不能隨意修改軟件功能。

Ultrain 超腦信任計算聯合創始人 &CEO 郭睿曾經在講解 Ultrain 經濟模型的直播中舉過阿里巴巴平臺打假的例子:阿里巴巴每年投入鉅額資金進行打假,但公衆仍舊可以想象打假只是走過場,象徵性做個別案例,然後利用假貨獲取更大的利益。阿里巴巴沒有辦法自證清白,本質原因就是阿里巴巴的運行平臺是他們自己控制的,系統數據是他們自己提供的;單一實體運營的中心化的平臺沒有辦法具有去中心化平臺與生俱來的天然信任機制。

2 原生的通證機制

比特幣爲什麼會成功?從技術上說,比特幣所用到的技術包括點對點網絡,各種加密算法等都不是新技術,在它之前也有很多電子貨幣 / 加密貨幣的失敗嘗試,很顯然技術不是其成功的本質原因。比特幣的成功可以歸因於其良好的經濟激勵機制設計 —— 區塊鏈的原生通證機制。其作用可分爲兩方面,一方面通證機制可以爲區塊鏈系統引入經濟博弈,保證系統的良性運轉;另一方面,也將區塊鏈打造成了價值分配轉移的最佳載體,使其被認爲是與信息互聯網相對應的價值互聯網。高曉松一次在清華大學的分享中曾經以區塊鏈通證機制對音樂行業的改造爲例,描述了通證將音樂的權益無限細分,從而引入更多參與方,形成各種新的商業機會的場景。

業界也有專業的通證經濟研究學派,從實現數字資產的通證化,到現實世界資產通證化,再到公司的激勵組織形式變革,給通證經濟構建理論支撐,描繪了區塊鏈與各行各業結合后豐富的應用前景。

這裏有必要對聯盟鏈做一下特別說明:聯盟鏈沒有通證機制,它是許可機制,節點入網需審覈批准,使用鏈外的激勵機制而不需要設計複雜的經濟激勵模型。聯盟鏈節點數量有限,相當於多中心化系統。

3 智能合約使能信任計算

比特幣初始定位於點對點的電子貨幣系統,只支持比較弱的腳本處理能力,侷限於金融業務邏輯。以太坊開始支持智能合約,使區塊鏈平臺能運行圖靈完備的程序語言,從而可以實現價值平滑轉移,支持複雜業務邏輯,提供信任計算能力,開啓了區塊鏈的新時代。智能合約使能了衆多商業場景,從遊戲、溯源、存證、能源交易到供應鏈金融等領域,都有比較廣泛的應用。這些應用場景或利用區塊鏈賦予的天然信任機制,或利用區塊鏈的通證機制,創造了新的商業模式,帶來了新的商業價值。

目前區塊鏈的處理性能與中心化系統還有差距,智能合約的編寫也很容易引入安全漏洞,一定程度限制了智能合約的應用。但這些都是新技術發展的必經階段,業界也在努力解決這些問題,更多的落地場景也逐步湧現,推動區塊鏈產業一步步走向繁榮。

區塊鏈的技術架構

區塊鏈領域涉及的技術比較廣泛,業界已經有很多的文章講述相關的加密技術,共識算法等具體知識,結合衆多的開源項目,對技術人員來說可以很方便地切入該領域。本節嘗試從整體架構層面,描述各個模塊相對關係,幫助大家建立一個整體認識。

聽剛發現 EOS 重大漏洞的專家談談,區塊鏈的技術本質是什麼?圖 2 區塊鏈技術架構

存儲層

區塊鏈平臺運行所產生的區塊數據,狀態數據等需要存儲到文件系統和數據庫系統中。區塊數據存儲了具體的交易信息,其中需要利用默克爾樹,非對稱加密等技術實現信息摘要與簽名,保證數據的完整性和一致性。狀態數據一般存儲到數據庫中,也稱之爲世界狀態,其中會包括系統運行參數,已註冊帳號以及用戶的智能合約字節碼以及合約中存儲的業務數據等信息。

區塊鏈運行平臺可以理解爲一個分佈式的狀態機:所有節點從同一個創世狀態開始,依次運行達成共識的區塊內的交易,驅動各個節點的世界狀態按照相同操作序列(增加,刪除,修改)不斷變化,實現所有節點在執行完相同編號區塊後,世界狀態完全一致。一個新節點加入網絡,如果是作爲一個全量節點,就需要從網絡中其他節點同步所有歷史區塊信息,驗證區塊的正確性,並依次執行區塊內保存的交易重構出世界狀態,直到與網絡上其他節點區塊高度一致時,才完成了同步,可以與其他節點一起繼續進行新區塊的共識挖礦。

網絡層

點對點網絡主要功能包括實現網絡拓撲,交互共識協議信息以及廣播 / 接收交易和區塊信息等。一個新的節點依賴與種子節點的交互,實現網絡鄰居節點自動發現與組網,形成去中心化網絡拓撲。不同的共識協議,會有不同的協議相關網絡數據包,完成共識過程。網絡中的大部分數據報文,是交易和區塊數據包。一個節點接收到用戶交易時,會廣播到網絡中並儘量傳播到各個節點。一個節點生產出來的區塊,也要求儘快傳播到各個節點。比特幣初始設計區塊大小 1MB,出塊時間間隔 10 分鐘,就是爲使各個節點儘可能接收到其他節點廣播的區塊,減少分叉區塊的產生。

在區塊生成時間間隔一定的前提下,一個區塊中包含的交易越多,系統的處理性能就越高。但一個區塊能夠包含多少交易,一方面取決於節點 CPU 的處理性能,另一方面取決節點的網絡帶寬。一個區塊內包含的交易執行總時長有限,CPU 處理性能越高,能包含的交易就越多;網絡帶寬的吞吐能力也是限制區塊大小的一個因素,網絡層需要儘量在下一個區塊生產前將當前區塊廣播至全網,因此節點的網絡帶寬越高,區塊的大小就可以越大,能包含的交易就越多。這裏所說的節點的 CPU 處理能力和網絡帶寬,要考慮全網所有節點,實際上受限於性能最差的節點。

共識層

區塊鏈的共識,就是利用一定協議機制使所有節點對接下來要生產出的區塊達成一致(即區塊內應該包括哪些交易)。我們可以想象成一個投票場景,每人都可以提出自己的建議,並且爭取拉到足夠多的投票。投票權的分配要能夠抵抗女巫攻擊,就是說不能使單一主體控制大量選票。在現實世界,我們可以按照選民身份賦予每個人投票權;在數字化世界的中心化系統中,我們利用註冊機制(包括手機號,驗證碼,手持身份證照片,活體檢測等技術手段)提高單一主體獲得大量選票的門檻;在去中心化的區塊鏈領域,沒有了身份識別機制,採取包括工作量證明 PoW,權益證明 PoS,委託權益證明 DPoS,各種 PoX (PoET,PoA 等)以及 VRF 類算法等方法分配投票權。

PoW 要求節點找到一個數值使區塊哈希值符合要求,在尋找該數值過程,節點需要投入大量算力。節點找到了滿足要求的數值,就獲得了投票權,並同時提出了自己建議的區塊(PoW 不需要投票環節,先獲得投票權的節點提議的區塊爲共識區塊);PoS/DPoS 利用節點抵押的代幣權益結合其他因素分配投票權,並結合 BFT 投票確認環節,選擇共識區塊;VRF 類算法則依賴密碼學,數學隨機數等技術分配投票權,經過 BFT 投票確認選擇共識區塊。

智能合約層

各個公鏈採用不同的編程語言進行智能合約編寫,比如以太坊的 Solidity,EOS 的 C++, Ultrain 的 typescript 等。智能合約編譯爲字節碼,並打包進交易信息上鍊進行存儲。各個節點接收到區塊後,提取其中包含的交易信息,將字節碼加載到虛擬機運行,運行結果反應到世界狀態中。上鍊的字節碼與開源的智能合約,可以進行一致性校驗,從而保證節點實際運行的字節碼與開源代碼所顯示業務邏輯一致,提供公開透明的信任能力,使能需要信任計算的商業場景。需要指出的是,目前出於安全角度考慮,將智能合約完全開源後會極大降低黑客攻擊門檻,真正開源智能合約的項目並不多。

共識層一般稱爲 Layer 1,智能合約層稱爲 Layer 2 (因此存儲層和網絡層可以認爲是 Layer 0)。有很多項目在 Layer 2 智能合約層進行創新,比如閃電網絡,去中心化交易所,跨鏈機制等。

應用層

各個公鏈的商業生態建設可以類比爲谷歌的 Android 生態建設:公鏈項目方類似谷歌角色,提供軟件平臺;礦機生產商類似手機硬件生產廠商,提供軟件運行硬件平臺;公鏈上層的豐富應用,也稱之爲 DAPP,類似 Android 的平臺豐富的 APP。公鏈項目方將軟件平臺研發出來,還需要提供開發工具,舉辦活動等來吸引開發者爲公鏈開發 DAPP,打造一個繁榮的生態。現在運行在公鏈上的 DAPP 以遊戲,溯源,交易所等爲主。遊戲利用區塊鏈的公開透明機制,可以將核心業務邏輯運行在區塊鏈平臺以示公平;溯源等應用則主要是將相關流轉信息記錄在區塊鏈平臺,利用其不可篡改特性,供用戶進行全生命週期歷史信息查詢,比如有貨高端運動球鞋交易信息在 Ultrain 公鏈上的溯源應用。公鏈上運行的 DAPP 質量好壞,數量多寡,也是該公鏈是否健康發展的一個重要指標。

需要指出的是,區塊鏈技術架構的分層只是方便理解而進行的邏輯層面劃分,大部分項目還是緊耦合的單體軟件形式。隨着區塊鏈技術的發展,已經有項目開始支持模塊化開發,比如支持更換網絡模塊、共識模塊等。

區塊鏈的技術發展方向

區塊鏈在資本和技術的推動下迅速發展,落地場景越來越多,已經開始切實爲傳統商業帶來價值。但區塊鏈技術本身還有性能低下,隱私保護不足,安全問題頻出,缺乏有效治理手段等問題。本節嘗試描述區塊鏈技術的幾個重點發展方向。

1 可擴展性提升

比特幣的性能約爲 3~7TPS,以太坊約爲 7~15TPS,而中心化系統比如信用卡平臺 2K TPS,業界標杆淘寶的雙十一處理能力約爲 30W TPS。許多公鏈項目努力提升區塊鏈可擴展性,主要包括如下思路:

共識機制

比特幣的工作量證明機制,爲保證區塊的網絡傳播時間,區塊大小限定爲 1M,並調整哈希計算難度,控制出塊時間間隔保持在 10 分鐘左右,造成其性能比較低。以太坊的 GHOST 協議利用叔塊的工作量證明,提高了出塊率,一定程度提高了處理性能。EOS 的 DPOS 則犧牲去中心化程度,21 個得票最高的超級節點按照順序出塊,每 0.5 秒生成一個區塊,每個節點連續出 12 塊,提高了出塊效率。 Ultrain 採用的共識機制兼顧去中心化與出塊效率,每輪利用數學隨機數算法選擇出塊節點,投票節點,出塊節點提議的區塊得到大多數投票節點的認可,即可生成區塊。

DAG 結構

比特幣每次只選擇一個區塊延長主鏈,爲減少分叉區塊限定了出塊頻率,一些項目採用 DAG 結構,實現可擴展性提升。比如 Conflux 項目改變每次只選擇一個有效區塊的方案,利用 DAG 結構將非主鏈有效區塊按照 EPOCH 概念維護起來,首先確定所有有效區塊的順序,再確定區塊內交易的順序,提高了處理性能。

分片分組

目前區塊鏈系統中每個節點存儲全網狀態,處理全網的交易,處理性能受限於網絡中性能最差的節點。分片分組就是按照一定規則將節點進行分組,整個系統分成若干個相對獨立的分片,單個分片只處理部分交易甚至只存儲部分狀態,多個分片並行處理,提高系統的處理性能。但分組分片後會帶來安全性下降,跨片交易處理複雜等問題:比如網絡有 1000 個節點,發動 51% 攻擊需要控制 510 個節點;但是分爲 10 個分片之後,單個分片只需要控制 51 個節點即可發動攻擊。Zilliqa 基於 PoW 結果隨機分配節點到不同分片,防止單個分片做作惡者控制;Ultrain 按照一定策略將全網節點隨機調度到不同分片,利用世界狀態實現節點快速啓動,既保證了系統的安全性,又提高了系統處理性能;Monoxide 則提出連弩挖礦概念提高單個分片的有效算力抵抗攻擊。跨片交易發生時,片與片之間按照同步或者異步方式協助執行分片交易,會增加通訊成本,極限情況甚至會使系統性能低於分片之前。Zilliqa 交易類型將交易分片分配,Monoxide 則將交易中的原子操作分成多個,通過異步消息傳遞完成交易接力執行。

側鏈跨鏈

側鏈通過將部分操作轉移到側鏈以解決主鏈的性能瓶頸,比如 Plasma 區塊鏈,其爲樹狀結構,每個分支爲一條子鏈,子鏈區塊頭的哈希值提交到根鏈,根鏈只需要處理子鏈的少量提交,使根鏈交易負荷有效降低。跨鏈概念則更廣泛一些,鏈與鏈之間實現資產、狀態等跨鏈轉移交換,比如跨鏈項目 Cosmos,其網絡由 Hub/ 樞紐與 Zone/ 分區兩部分組成,分區之間通過樞紐進行交易,並可以將交易轉移至鏈下進行從而減輕鏈上交易處理壓力。

二層方案

前面介紹的性能提升手段一般稱之爲 Layer 1 解決方案,還有一大類爲 Layer 2 方案,即在智能合約層利用一定機制實現鏈下執行交易,僅在必要時候纔將交易廣播到網絡中,實現吞吐量的提升。比如比特幣上最近比較火熱的閃電網絡,其主要思想是建立雙向支付通道,利用哈希時間鎖定和哈希密鑰鎖定,讓雙方在通道內反覆任意多次交易,最後通道關閉時再將初始和最終餘額信息廣播到比特幣區塊鏈。

2 系統安全

區塊鏈因爲其價值網絡的特殊性(攻擊成功可以很快變現),頗受黑客青睞,安全事件頻發。按照慢霧科技統計,僅 ETH 和 EOS 累計歷史攻擊數字貨幣損失額就高達 40 億美元。一個公鏈項目工程複雜度極高,需要考慮各個層面的安全問題,比如礦機層面涉及的主機系統安全,暴露端口安全,密鑰存儲安全,網絡拓撲規劃,最優系統配置等;共識算法層面需防範相關的 51% 攻擊、無利害攻擊,長程攻擊等;智能合約層面的安全則更是重中之重。一方面智能合約語言最佳實踐不完善,另一方面 DAPP 開發項目方經驗不足,代碼實現互相借鑑,黑客發現的一個漏洞可以攻擊很多 DAPP。智能合約中隨機數生成也是一個重災區,項目方使用的隨機數算法有漏洞,黑客可以提前預測其數值,穩定獲取收益。

公鏈項目方需提升公鏈軟件本身安全性,並需提供礦機部署安全配置建議,智能合約開發最佳實踐等指導信息;公鏈項目方也可以提供安全相關合約中間件給開發者使用,比如 Ultrain 提供了隨機數生成中間件,可以幫助 DAPP 項目方有效抵禦隨機數相關攻擊。此外,目前也有一些專注於區塊鏈安全的公司,提供代碼安全審計,形式化證明等服務爲區塊鏈的安全保駕護航。

3 隱私保護

比特幣構建了一個去中心化平臺,去除了對第三方的信任依賴,但需要將所有的交易廣播到網絡上,通過所有節點達成共識來保證系統的安全性。攻擊者通過分析特定地址的交易特徵並結合一些實際信息,就有可能得出交易地址與實際人的對應關係,從而給使用者的隱私帶來極大隱患。另外也有一些業務場景要求將區塊鏈的鏈上數據進行加密,不允許公開訪問,比如企業間的具體交易數據,病人的隱私數據等。利用密碼學技術,實現不泄漏數據本身即可進行某些數據運算,使對方完成數據的完整性與真實性的校驗,相關技術有多方信任計算,同態證明,零知識證明等。隨着區塊鏈技術發展普及,商業落地場景中隱私保護需求會越來越多。隱私保護方面,Ultrain 公鏈已經提供零知識證明中間件供開發者使用。

4 現實世界數據通道

區塊鏈世界利用去中心化運行平臺帶來天然信任,但是該信任只侷限於鏈內數據。許多商業場景的落地,都需要智能合約與鏈外數據進行交互。如何實現數據上鍊環節的信任機制,成功連接現實世界與區塊鏈世界,這就需要用到預言機技術。預言機是現實世界與區塊鏈世界的橋樑,是爲區塊鏈世界提供數據的中介。但預言機只是作爲數據源與區塊鏈之間的安全可信的數據通道,只保證數據不被篡改,無法保證數據源的正確性。用戶可以獲取多個數據源的數據,在應用層對這些數據進行聚合,得到最終的結果。預言機的實現包括中心化方式,如以太坊上運行的 Oraclize,數據是由 Oraclize 公司架設的服務器提供;去中心化方式,如近期與 Ultrain 達成戰略合作的 DOS Network。預言機通過安全的數據通路和多信息源對比技術,一定會促進越來越多的應用場景落地,在區塊鏈生態中的發展扮演越來越重要的角色。

區塊鏈技術仍在迅速發展,相關生態建設也在各方努力下不斷向前推進,區塊鏈技術商業落地應用不斷湧現,對區塊鏈技術能否成爲新一代商業基礎設施,我們充滿期待。