1. 程式人生 > >區塊鏈平臺調研與分析報告.md

區塊鏈平臺調研與分析報告.md

區塊鏈平臺分析——Ethereum & BCOS

此文是FISCO-BCOS專案的一篇報告,閱讀筆記 原文連結:點選

概述

09年比特幣誕生後區塊鏈技術的迅速發展和受重視程度。在金融方向的領域,具有簡化和變革業務流程、保護資料完整性以及轉變商業模式的潛力。

企業在應用區塊鏈技術時,主要在身份認證、共識機制、祕鑰管理、隱私保護、監管要求等方面進行不同的個性化配置,來滿足不同業務的需要。

開源公有鏈技術平臺:比特幣、以太坊 聯盟鏈技術平臺:Fabric、R3 Corda、BCOS區塊鏈平臺

不同的企業或組織應根據自身業務特點進行選擇平臺開發,進行量化定製

  1. 研究目標

    本報告將通過分析部分有代表性的區塊鏈技術平臺,從架構分析、核心技術元件、應用功能、技術能力、安全機制、平臺適用性、開發及工具、維護支援能力等方面進行對比。明確不同平臺的特點和適用範圍,提供教總和的資訊參考。

  2. 研究平臺範圍

    選擇以太坊、Fabric、Corda和BCOS

    本筆記將選擇性的瞭解以太坊和BCOS的特性

  3. 內容和方法

    8個維度關注區塊鏈平臺的技術、應用、安全、支援等重點領域

    維度分析——分析——總結

  4. 一些術語和縮略詞

    共識機制 區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法
    區塊 一個區塊是一個數據包,其中包含0個或多個交易,前塊的雜湊地址以及其他可選資料
    圖靈完備 一切可計算的問題都能計算,這樣的虛擬機器或者程式語言就叫圖靈完備的
    PoW 工作量證明
    POS 權益證明 Proof of Stake
    PBFT 實用拜占庭容錯
    幽靈 協議。通過該協議,區塊可以包含不只是他們父區塊的雜湊值,也雜湊父區塊的其他子塊(叔區塊)的陳腐區塊。這確保了陳腐區塊仍然有助於區塊鏈的安全性,並減輕了大型礦工在快速區塊鏈上的有優勢的問題,因為他們能夠立即得知自己的區塊,因此不太可能產生陳腐區塊

架構分析

系統架構決定了應用的使用範圍、跨鏈及鏈上鍊下的資料整合和可行性,甚至商業變革的方向。具體的區塊鏈平臺架構存在差異,傳統的區塊鏈平臺習慣將資料分為資料層、網路層、共識層、激勵層、合約層、應用層。一種可能的架構如下圖:

區塊鏈平臺架構示例

  • 資料層:封裝底層區塊資料的鏈式結構,以及數字簽名、雜湊和非對稱加密技術等多種密碼學演算法和技術。主要實現資料儲存、賬戶和交易實現與安全兩個功能
  • 網路層:包括P2P網路機制、資料傳播機制和資料驗證機制等,主要實現網路節點的連線和通訊
  • 共識層:封裝網路節點的各類共識機制演算法,實現全網所有節點對交易和資料達成一致,防拜占庭攻擊、女巫攻擊和51%攻擊等共識共識攻擊。
  • 激勵層:實現區塊鏈代幣的髮型和分配機制,該層主要出現在公有鏈中,用以激勵遵守規則參與記賬的結點
  • 合約層:封裝各類指令碼、演算法和智慧合約,賦予賬本可程式設計的特性,通過虛擬機器執行程式碼實現智慧合約
  • 應用層:封裝區塊鏈各類應用場景和案例,如以太坊上的DAPP;某些平臺架構也將應用層和合約層劃分為一個邏輯層
  1. 架構靈活性
    • 以太坊計劃通過分片機制提高整個網路的靈活性,分片之前整個網路的處理取決於單個節點的處理;分片後,只有同一片內的處理是同步的、一致的
    • BCOS共識演算法模組採用外掛化設計實現,通過修改系統配置,實現在多個聯盟鏈裡使用不同的共識機制,參與到同一個聯盟鏈的所有節點必須採用同一種共識配置
  2. 節點分類
    • 以太坊從PoW共識機制逐步向PoS共識機制,節點間將依據資產的多寡分配相應的記賬權重,這樣可以更好地利用計算資源。
    • BCOS將節點分為共識節點和觀察節點,共識節點參與共識演算法,成為鏈上的記賬者;觀察節點則不參與共識,只同步資料

核心技術元件

核心技術元件值區塊鏈系統所依賴的基礎元件、協議和演算法,進一步可細分為通訊、儲存、安全機制、共識機制。

  1. 共識機制

    共識機制是區塊鏈系統中各個節點達成一致的策略和方法。目前主流的共識機制有PoW、PoS、DPoS、Raft、PBFT。對比如下:

    主要共識機制對比

    • 以太坊當前使用PoW的共識機制,需要全網具備大規模算力支撐來保證網路安全性。目前可能正在向PoS過渡或使用混合機制
    • BCOS採用PBFT、Raft作為聯盟鏈的共識演算法,系統共識機制採用外掛化實現,通過修改系統配置,即可設定使用不同的共識機制,但參與同一聯盟鏈的所有節點必須採用同一種共識配置
  2. 通訊/P2P技術

    區塊鏈通常採用P2P技術組織各個網路節點,每個節點通過多播實現路由、新節點識別和資料傳播等功能。

    以太坊客戶端P2P協議是一個標準的加密貨幣協議,能夠容易地為其他加密貨幣使用,僅有的改動是引入“幽靈”協議。以太坊採用了幽靈協議的最基礎部分,即廢塊必須以下一個區塊的叔區塊的身份納入計算。

  3. 儲存

    區塊的資料結構通常只增加而不進行刪改,儲存開銷將會越發增大。

    以太坊使用Merkle樹存放交易雜湊,在面臨不斷增長的資料時,一旦需要回收硬碟空間,可選擇性將老舊的交易從樹中剔除,具體如何操作尚有爭議。

    BCOS支援分組多副本方式儲存檔案,並在區塊鏈中儲存檔案的雜湊值和相關定址資訊,提高區塊鏈的儲存和網路同步效率。也支援分散式資料儲存的方案,在綜合考慮資料的容量、可維護性、安全性等方面的基礎上,企業可使用現有分散式儲存方法如資料倉庫、資料庫叢集等儲存區塊鏈資料

  4. 計算效率

    以太坊中交易理想中可以通過分割槽解決智慧合約狀態持久化問題,從而使得交易可以被並行驗證,但該功能尚未實現。

    BCOS利用叢集化、分片機制,使交易按一定的規則互相割離,並可被並行處理,且資料量可以通過垂直切分的方式,分佈儲存在不同的儲存裝置上,以滿足效能和容量平行擴容的需求。

  5. 資料結構

    區塊鏈技術中,資料以區塊的方式永久儲存。區塊按時間順序逐個先後生成並連線成鏈,每一區塊記錄建立期間發生的所有交易資訊。

    區塊的資料結構一般分為區塊頭和區塊體。前者用於連線到前一個區塊並且通過時間戳特性保證歷史資料的完整性;後者則包含了經過驗證的、區塊建立過程中所產生的所有交易資訊

    不同的區塊鏈平臺的頭部資訊稍微差異

應用功能

區塊鏈平臺為進行使用者身份管理、實現上層應用所需的基礎功能元件,應用功能是在核心技術元件的基礎上,提供針對區塊鏈應用場景的基礎管理功能。

  1. 身份認證

    • 以太坊採取匿名身份認證體系,對線上線下的身份匹配無強制要求
    • BCOS使用CA證書的准入機制,支援使用者賬戶管理功能,採用角色和許可權模型實現聯盟參與者管理,底層平臺還預置了控制交易和部署合約的許可權和介面
  2. 賬戶設計

    • 以太坊採用了餘額賬戶機制
  3. 私鑰保護

    • 以太坊:無人操作的挖礦、記賬節點上不儲存私鑰,隨同這些節點部署的智慧合約也不使用私鑰,所有私鑰均部署於“端”,由使用者本地儲存。
    • BCOS加密資料的祕鑰採用加密機,獨立祕鑰伺服器等方式進行維護,和節點分離儲存,報站祕鑰的安全性
  4. 支援智慧合約

    • 以太坊可實現“圖靈完備”的智慧合約功能,採取合約和共識相連
    • BCOS運用Solidity合約開發語言,和以太坊的主要合約開發語言一樣
  5. 監管相關功能

    • 以太坊:公有鏈,監管可隨時接入;由於匿名身份性,監管意義不大
    • BCOS:支援監管部門和審計部門作為特殊節點的接入,即實時同步資料,並對資料完整性、有效性、過程和流程的合規性進行即時監控。還提供監控、審計資料介面
  6. 特權機制的實現

    特權機制,一類是暫停、回滾或取消交易;二是改正資料

    以太坊在受到智慧合約DAO攻擊時,只能進行硬分叉,無法進行特權。

    BCOS可以針對特定的業務場景,制定特殊的許可權集合。

技術能力

技術能力是每個區塊鏈技術平臺的關鍵能力之一,也是區塊鏈應用企業在選擇區塊鏈技術平臺過程中的重要考量因素之一。該報告主要從平臺業務吞吐量、區塊或交易的確認時間、區塊鏈平臺可用性等方面進行分析。

  1. 吞吐量
    • 目前Ethereum網路受限於CPU單執行緒效能,早期測試網路已達25PTS(每秒交易數),優化後可達50或100PTS。真實應用程式負載下,可能會被限制到10tps或更低。
    • BCOS利用PBFT共識機制,在4節點環境下,轉賬交易的合約呼叫,效能可達數千TPS,通過平行擴充套件可滿足更高服務要求。
  2. 確認時間
    • 當前Ethereum協議取決於節點根據在計算上開銷很高的PoW演算法選擇用於最長鏈的下一區塊,確認時間也是12秒左右。
    • BCOS支援動態配置確認時間,其所採用的共識演算法均可支援1秒出塊,出塊即達成共識
  3. 可用性
    • 以太坊採用PoW提供了較高的靈活性和可用性。每個節點都獨立構造區塊而不需要其他節點的參與,節點可隨時加入、退出網路。
    • BCOS可支援使用PBFT和Raft兩種共識機制,使用PBFT時,系統少於等於1/3的節點故障不會影響共識進行;使用Raft演算法時,系統大於等於1/2數量節點出現故障,網路將變得不可用

安全機制

區塊鏈設計中採用了分散式資料儲存、共識機制、數字簽名、加密演算法等多種安全手段和技術。保證資料完整性、不可篡改性和一致性,從而保證資料從交易、共識計算、區塊確認、資料儲存等生命週期的安全。

  1. 祕鑰生成機制——使用者賬戶祕鑰層面,各平臺均利用非對稱加密演算法生成公私鑰

    • 以太坊生成祕鑰機制:隨機數發生器生成私鑰,再經SECP256K1(一種橢圓曲線演算法)生成公鑰
  2. 祕鑰儲存

    • Ethereum祕鑰生成後作為檔案或字串儲存使用者終端或託管到伺服器,祕鑰檔案是一個JSON格式的文字檔案
    • BCOS祕鑰儲存在與區塊鏈節點隔離的伺服器、加密檔案、USBKey、加密機等。需要使用私鑰時,通過安全的內部通訊介面或通過使用者密碼授權訪問私鑰
  3. 祕鑰使用和找回

    Ethereum和BCOS均無定期更換機制,且私鑰丟失後無法找回

  4. 防“雙花”——二重支付,指攻擊者幾乎將同一筆錢用於不同交易

    • Ethereum採用餘額機制:每個賬戶都有一個狀態,狀態中記錄了賬戶當前的餘額,轉賬的邏輯即從一個賬戶中減去轉賬的金額,並在另一個賬戶中加上相應的金額,減去部分和加上的部分必須相等。
    • BCOS基於賬戶模型和區塊高度,對交易生命週期進行檢驗和控制,避免交易被不正確或不合法的重放。同時,BCOS作為聯盟鏈平臺沒有內建的原生代幣,不存在幣的雙花問題。此外,BCOS上的資料及資產使用智慧合約來定義和進行操作,智慧合約圖靈完備的特性,能讓業務方進行有效性、合法性的判斷和控制,從一定程度上保證資產交易的安全性
  5. 隱私保護

    • Ethereum 使用“狀態旁路”方案,此策略下,分散式賬本可見的只是粗粒度的“批發”,真正細粒度的雙邊或有限多邊交易明細,則不作為“交易”記錄在分散式賬本上,如果需要更改旁路中資產比例,則將指令加密傳送到相應智慧合約之中,因此交易明細的變動對於不在合約中的其他使用者而言就是不可見的,但“狀態旁路”只能達到部分保護的效果。
    • BCOS可在部分業務場景中,引入可信的中央對手方提供信用倍數,交易參與方的交易資料明細對中央對手方為全部可見,但是對聯盟鏈為不可見,由中央對手方對交易進行驗證並提供面向全聯盟鏈的證據。 通過物理隔離、邏輯通道設計,交易明細僅傳送給交易牽涉的節點以及可能存在的監管節點,從基礎層面防止了隱私資料的擴散。 BCOS在客戶端和智慧合約上實現加法同態加密演算法。

平臺適用性

區塊鏈應用企業在選擇技術平臺的過程中,應考量企業自身的商業模式與平臺應用適用性之間的契合度。目前,金融、網際網路、能源、農牧、工業製造等各個行業均廣泛探索區塊鏈的應用佈局。目前,“聯盟鏈”、“私有鏈”是主要應用形態,其他應用暫不成熟,“比特幣”是唯一較成熟的公有鏈。

  • Ethereum 是內建圖靈完備程式語言的區塊鏈,任何人都能夠建立合約和多中心化應用,並在其中設立他們自由定義的所有權規則、交易方式和狀態轉換函式。 Ethereum 通過Ethereum社群共治的公鏈,體現了以太坊平臺對公鏈場景的適用性,但也可以利用它部署聯盟鏈或私有鏈。 Ethereum可利用圖靈完備的智慧合約,適應金融應用、物聯網、供應鏈管理、社交網路、去中心化自治組織(DAO)、預測市場等場景
  • BCOS定位為企業級應用服務的區塊鏈技術平臺,其在多鏈、跨鏈、分散式儲存及隱私保護等方面上的設計,滿足其在金融、健康醫療、供應鏈、工業、物聯網、能源服務等多個領域上的適用性。 另外,BCOS可支援賬號管理、資產管理、交易管理、安全控制等模組功能的配置,因此對於多種場景下所需的功能均能較好適用。

從區塊鏈平臺與外部資料對接的角度上看,各平臺均在架構上預留了身份、策略、資料、過程等應用模組,提供了區塊鏈與鏈外系統對接的通道,如鏈外的物聯網裝置、支付裝置、分散式雲端儲存系統、交易系統的對接和外部使用者身份的繫結等

開發及工具

  1. 程式語言
    • Ethereum 的客戶端主要通過Go語言、C++和Python語言編寫,再通過編譯器轉成EVM語言。Java和Ruby的客戶端也即將成熟。Ethereum使用Serpent、Solidity、Mutan和LLL四種語言進行合約程式設計,其中Solidity為首選。
    • BCOS業務層支援採用C++、Java、Python、JS、Go等語言進行開發,可使用Ethereum的Solidity作為合約開發語言
  2. 配套開發工具
    • 以太坊的社群文件僅次於比特幣,在github釋出;中文技術文件釋出在ethfans.org中。Ethereum官方提供錢包客戶端Mist,支援進行交易,同時支援直接編寫和部署智慧合約。
    • BCOS在Github中釋出了原始碼及一系列的文件支援;提供SDK工具包,在此基礎上開發者可開發面向終端使用者的客戶端程式,在客戶端上可以儲存鏈上部分或全部的資料,也可以作為輕客戶端訪問鏈上節點。
  3. 介面完備程度
    • RPC介面是Ethereum與其他IT系統互動的介面,Ethereum節點在8545埠提供了JSON RPC API介面,資料傳輸採用json格式,可以執行web3庫的各種命令,可以向前端如Mist等圖形化客戶端提供區塊鏈的資訊。
    • BCOS支援通用API介面,滿足跨技術和跨系統對接要求。對業務層提供介面服務,並通過介面和區塊鏈節點進行互動、傳送交易、資料查詢等。平臺提供HTTPS服務埠,採用json編碼格式定義功能介面,包括使用者資料查詢、區塊資料查詢、合約部署和管理、傳送交易、交易資料查詢、進行節點之間的通訊等。 BCOS的SDK介面分為面向區塊鏈底層功能和麵向業務級別的介面。
  4. 智慧合約的可編輯性
    • Ethereum 為使用者提供了自主合約建立平臺,合約內容可以包含貨幣轉賬在內的任意邏輯
    • BCOS合約開發支援solidity語言,具有圖靈完備性。具有JVM支援的java開發語言版本正在成熟中

維護支援能力

  1. 版本升級維護與保障
    • Ethereum主要由Ethereum基金會負責
    • BCOS原則上保障向下相容
  2. 開發者數量

總結

1538960884703