紙貴區塊鏈及其應用體系的通用技術架構

買賣虛擬貨幣
目前,應用構建者往往面臨選擇的難題,需要進行大量的取捨和開發工作,以實現自己預想中的產品形態。區塊鏈底層的開發成本較為高昂,開發者通常需要基於合適的底層鏈進行二次開發,並對自己的應用進行適配性修改以適應該底層鏈的特點。同時,由於安全、效率、公平這三點存在矛盾而無法同時達到最優,能夠適配所有場景的完美區塊鏈底層並不存在。例如,選定PoW作為共識演算法的公鏈專案,在保證大量節點參與共識且達到50%容錯的情況下,不得不犧牲吞吐量和交易確認速度,難以滿足實時的應用需求,並耗費大量電能;選定有向無環圖(DAG)作為共識基礎的專案,雖然保證去中心化並獲得吞吐量優勢,但沒有解決高能耗和交易確認慢的問題;選定Hyperledger Fabric作為底層鏈的專案,可以滿足高吞吐量、快速確認、低能耗的需求,但引入了對中心化節點的依賴。一個需要指出的問題是,不同平臺上的開發往往不具有可複用性,在某個平臺上付出的努力,通常無法直接遷移到另外的平臺上,使得相比於業務功能的具體實現,初期的選擇變得尤為重要。上述問題又被稱為平臺“鎖定” 風險,區塊鏈的應用開發者不得不在開始階段就選擇某種具體的區塊鏈底層技術。並且在之後受到它一定程度上的限制。紙貴區塊鏈致力於提供適用於多種業務需求的區塊鏈底層服務,以期在保證底層開發維持其理想的底層技術棧的同時。方使區塊鏈的上層應用開發。紙貴區塊鏈底層平臺以通用性、模組化。可播拔、安全性為設計原則,使得區塊鏈底層的搭建儘可能輕量級。在底層的組織上,各共識模組、功能模組可定製且可插拔,為適配具體場景提供使利。設計原則
功能解耦原則各個模組之間,特別是不同功能層之間的服務應當儘可能地實現功能解耦。例如,底層模組的任務是構建安全、滿足一致性要求的去中心化系統,它不應為使用者如何使用自己的私鑰而煩惱;區塊鏈應用應當更多地處理具體的業務邏輯,而將介面適配、賬戶管理、區塊鏈資訊查詢等功能交給其他的專門模組處理,從而有效地避免架構過於複雜、錯誤耦合、除錯困難等問題。相容性原則區塊鏈的基本模組在設計上應當遵循相容性原則,使得不同的應用開發者能夠快速而方便地進行整合。例如,資料的傳輸內容應當使用通用標準,便於使用者理解;賬戶系統應當滿足絕大部分場景的需求即可,而不應當新增諸如個人資訊、角色資訊等內容。可插拔原則當相容性原則無法滿足,必須透過不同的模組來提供相同種類的功能時,應當考慮可插拔原則。例如,不同的共識引擎之間應當能夠進行切換,使用者可以根據自身的需要對具體的功能模組進行組合,以達到特定的功能或效能要求。
安全性原則區塊鏈底層及應用在設計上應當遵循安全第一的原則。保證使用者的利益,使得系統在受到一定程度的惡意攻擊時仍能保持健壯。在沒有中心化管理系統的區塊鏈底層及應用中,這一點尤為重要。底層鏈架構

底層鏈是區塊鏈系統的基石,為鏈上資訊的分散式共識提供支撐。紙貴區塊鏈產品的底層通用架構如下圖所示:

共識引擎——共識引擎是底層鏈的執行基礎。 其中,區塊與狀態是分散式節點之間透過一致性協議達成的共識內容,是區塊鏈執行機制的基本資料儲存; P2P網路協議是節點間自組織與通訊的基礎協議。這兩個模組共同作用,奠定了區塊鏈系統的執行基礎。

鏈上系統——鏈上系統是底層鏈的功能核心。該部分包括一系列可插拔的、 與共識機制緊密結合的底層基礎邏輯。該部分包括用於分散式實體識別與認證的密碼學基礎演算法、鏈上資產、交易、跨鏈協議等。跨鏈協議是鏈與鏈之間資產的互動與連線、資訊的傳遞與流轉遵循的互動方式。此外,智慧合約執行環境(如EVM、JVM、x86VM,以及Docker等)為支援智慧合約的正常有序執行提供了適宜的環境。

鏈外互動——鏈外交 互是底層鏈的對外視窗,包括智慧合約與互動介面。使用者可以對合約進行安裝、刪除、初始化、凍結等操作,也可以透過介面與智慧合約互動,從而實現所需的分散式業務邏輯,或者對合約請求、使用者身份、其他合約的狀態進行稽覈,對區塊鏈進行治理等。

1.共識引擎

共識引擎是區塊鏈分散式系統的執行基礎,其核心的功能為對區塊鏈網路中的交易進行定序。

區塊與狀態機

區塊鏈網路是由多個節點構成的分散式系統。區塊與節點的狀態機共同構成了該系統的資料底層。其中,區塊儲存了系統中所有需要共識的操作(如交易) 的歷史記錄,這些操作的記錄極難被篡改;節點的狀態機儲存了節點執行時的最新狀態,是區塊鏈底層維護自身狀態的儲存空間,它使得智慧合約能夠被正確執行。

如果將區塊比作區塊鏈的“硬碟”,那麼狀態機就是區塊鏈各執行節點的“記憶體”。區塊中記錄了每筆操作的記錄,透過整個鏈條的順序回放便得到了區塊鏈的當前狀態。這種分離的設計使得智慧合約的執行成為可能,否則,區塊鏈將需要重放所有區塊中的交易以獲取使用者的當前餘額,在存在大量交易的場景中難以實用。由於狀態機分別儲存在每個節點上,單一節點機的狀態機是有可能被篡改的,但是被篡改了狀態的節點無法與其他節點達成共識,從而被整個網路所孤立。

共識演算法

各個節點對區塊和狀態達成一致需要由共識演算法保證。共識演算法的選擇往往受制於具體的應用環境和應用目的。例如,當區塊鏈系統用於公司內相對獨立的業務部門之間的協作時,可以選擇CFT (Crash Fault Tolerance)類共識演算法,更利於業務效率提升,降低各業務部門達成互信和共識的成本;當區塊鏈系統用於聯盟成員之間的共識時,可以選擇PBFT (PracticalByzantine Fault Tolerance)、Tendermint 等可以防禦一定的作惡節點,同時兼顧處理效率的共識演算法;當區塊鏈系統暴露於公網供所有人自由接入時,可能需要選擇PoW (Proof ofWork)、PoS (Proof of Stake)等能夠容納大量使用者,容忍低於50%作惡節點,安全維護分散式賬本的演算法。這些演算法各有利弊,互相難以替代,只有面向具體業務場景,才能設計出真正合適的演算法。

針對該問題,紙貴區塊鏈採用可插拔的共識引擎,對共識演算法進行統-介面封裝,將上層業務邏輯與底層共識單元相分離。對於不同的共識方式,按照相同的共識介面進行開發,可實現相容紙貴區塊鏈的、上層模組,實現業務邏輯與共識引擎相互解耦,並針對不同場景的需要,替換不同型別的共識演算法。

2.鏈上系統

鏈上系統包含節點的核心處理機制,在去中心化的場景下實現部分和區塊鏈共識緊密相關的業務功能,並且其中的一些機制可以提供給開發者進行上層應用的開發工作。這些機制與共識引擎共同作用,完成底層鏈的基礎功能。

密碼學基礎方法

區塊鏈又被稱為"System of Proof",密碼學基礎方法則是支撐證明的強有力工具。它為各種去中心化功能的實現提供了可能性,也是分散式策略賴以實現的最基礎的演算法庫與工具包。演算法包主要包括但不限於以下幾種開源的、經過理論推導與實驗驗證的密碼學庫。

雜湊演算法

雜湊演算法透過單向雜湊函式確保資訊完整性,防止資訊被篡改。在實現區塊之間的鏈式結構、簽名前對待籤資訊進行雜湊、產生鏈上唯一ID 等場景中均會用到雜湊演算法。

非對稱加密與數字簽名演算法

非對稱加密在區塊鏈底層系統中主要提供數字簽名與驗籤功能。簽名驗證工作存在於整個交易過程中,涉及到中間的每個節點,如提交與驗證交易請求,提交與驗證背書籤名、提交與驗正出塊簽名等。在使用者自主生成和管理的匿名賬戶地址體系中進行的資產交易,也會涉及到非對稱加密與數字簽名。出於對使用者賬戶私鑰安全性的考慮,紙責提出了符合ISO 7816標準的安全硬體私鑰儲存方案,確保使用者鏈.上資產的安全性。

環簽名演算法

紙貴透過提供環簽名演算法模組。滿足使用者對於交易匿名性的需求。通常情況下,一般的加密簽名可以跟蹤交易,得到傳送人的公鑰與地址。透過呼叫紙貴的環簽名模組,可以實現對於任何交易,無法追蹤其付款方是誰;對於向外傳送的兩筆交易,其他人無法證明其是否發給同一個收款人。

同態加密

使用者在接受資料服務時,需要將資料以明文形式傳送給資料服務提供方。在注重資料隱私的場景中,如何在保證使用者資料機密性的前提下,使使用者獲得資料服務就十分重要。紙責透過提供同態加密組建,可以確保使用者資料在整個服務過程中的機密性。使用者將資料以密文形式傳送給資料服務提供方。資料服務對密文進行特定形式的代數運算,得到仍然是加密的結果;使用者得到加密結果後,將其解密所得到的結果,與對明文進行同樣運算所得結果一樣。 紙貴科技目前支援滿足加法同態和滿足乘法同態的加密演算法,並將在未來進一步支援基於帶擾動學習的多金鑰全同態加密方案。

賬戶與交易

賬戶與交易是由密碼學方法直接保證的數字資產模型,也是實現鏈上激勵機制的基本元素。其保證了區塊鏈能夠成為自組織、自驅動的去中心化系統。對於任意賬戶資產體系而言,最核心的問題是安全,其次才是效能。

安全性是賬戶體系最基本也是最重要的要求。首先,由於區塊鏈賬本具有一定的透明性,所有共識節點均需要對交易進行確認並達成共識,傳統的密碼賬戶體系無法支撐區塊鏈上的分散式應用。在此場景下,依賴非對稱加密等密碼學演算法的去中心化賬戶體系應運而生,區塊鏈應用得以在公開的環境確保每個人的資產權屬。其次,由於區塊鏈上的賬本允許任何人訪問,惡意操作難以控制和回滾,必須從機制上保證沒有人能夠作惡。其中最典型的一個要點是,去中心化賬戶體系應當確保可以抵抗雙重花費攻擊(DoubleSpending Attack)。例如,比特幣採用未花費交易輸出(Unspent Transaction Output)機制來保證資金的流動中流出始終等於流入;以太坊採用Nonce保證交易不會重放。不管採用何種方案,確保賬戶的資產安全,抵抗任何可能出現的攻擊,是區塊鏈賬戶體系最基本的要求。

由於賬戶系統與支付關係密切,去中心化的賬戶體系也應當支援高併發交易。去中心化賬戶體系中的交易在兩個地方存在瓶頸。其一,所有交易必須經過分散式共識,共識的過程需要消耗時間;其二,區塊鏈賬戶的賬戶狀態根據每個區塊的確認進行修改,如果某筆交易是根據當前區塊的賬戶狀態構建,而在下一個區塊到來後被廣播至區塊鏈網路,這期間很有可能已經發生了賬戶狀態的改變,從而產生衝突。去中心化賬戶體系應當能夠正確並有效地處理這兩個問題,支援高併發交易,從而能夠獲取更廣泛的應用空間。

智慧合約執行環境

智慧合約具有特殊的分散式特性,其可進行的操作與可利用的資源應保證無法對宿主機造成任何損害。為了保證智慧合約能夠在資源受限的條件下正確執行,智慧合約虛擬機器是不可或缺的基礎執行環境。它透過提供受限的指令集與特殊的資源排程策略,保證了智慧合約的執行不會對底層鏈造成損害性的後果。

常見的智慧合約執行環境包括以太坊的以太坊虛擬機器(Ethereum Virtual Machine)、Fabric的Docker等,也有部分依賴於特定硬體或實現了特殊演算法的虛擬機器,可根據應用的需要定製化使用。

3.鏈外互動

鏈外互動層是區塊鏈與外界進行溝通的視窗,由智慧合約及其對外介面組成。

智慧合約是區塊鏈應用的開發者與鏈上機制進行溝通,實現去中心化業務邏輯的重要載體,也是區塊鏈生態得以繁榮的根本所在。透過智慧合約,工程師們可以在區塊鏈的去中心化環境中構建可信的應用程式,實現具有分散式共識特性的業務邏輯。他們寫的每-行程式碼,以及程式的每一次輸入輸出,都將被底層區塊鏈忠實記錄與存證。這些智慧合約根據功能的不同可以被分為三類:第一類是鏈外互動的過程中存在的許可權認證、正確性檢查等保護機制。透過這些機制可以構建具有許可權管理的許可鏈,在不少受限的場景下具有廣泛的應用;第二類是鏈上治理合約。這些合約將提供鏈上審計、合約管理等功能,並且所有操作均將作鏈上記錄;第三類則是業務合約,這些合約與鏈外系統一起,構成各式各樣的去中心化應用程式。所有智慧合約必須遵守介面開發規範,按照對外互動的協議要求實現呼叫介面從而對外提供服務。

智慧合約的開發者們彷彿戴著鐐銬在跳舞。一方面,為了實現去中心化的應用,他們必須遵循鏈上機制提出的種種限制,使用有限的操作方法與受限的計算資源對鏈上的資訊進行處理;他們被禁止使用隨機數等會影響共識達成的機制;他們必須保證自己的程式碼毫無差錯。另一方面,合約工程師們要針對外部系統提出的種種要求,以全面的、系統的觀點設計合約功能與應用結構,最終適配並交付對外互動層,供外部應用使用。智慧合約工程師必須做到邏輯嚴密,程式碼嚴謹,既熟悉計算機的基本原理與演算法的靈活應用,又通曉分散式系統的執行邏輯與應用系統的架構設計,這對應用開發者提出了很高的技術要求。

應用架構

對於一個完整的區塊鏈應用而言,紙貴區塊鏈的應用架構如下圖所示:

其中,區塊鏈底層與儲存模組相配合,能夠滿足大多數業務場景的需求;區塊鏈介面卡是將不同底層的介面適配並統一在同一協議框架下的轉換器,透過向下相容不同底層、向上提供統一介面的方式,大大節省上層業務服務的整合開發成本;介面閘道器是統一互動入口,進行請求轉發。負載均衡的輔助模組,也是隔離惡意攻擊。記錄問題操作的防火牆;區塊鏈服務是透過對區塊鏈底層介面的再次抽象與封裝,對外提供的簡化操作形式,並按需為上層應用實現使用者管理、身份識別與驗證的基礎設施;透過對區塊鏈服務的定製化排程與包裝,最終整合為區塊鏈應用供使用者使用。

1.區塊鏈介面卡

區塊鏈介面卡使得上層應用的大部分功能可以不關心底層鏈的具體協議,而專心進行應用邏輯的開發。

區塊鏈介面卡是使得底層與應用解耦的關鍵模組。正如在對底層鏈的鏈外互動層進行闡述時指出的。底層的開發者更注重底層的處理效能、介面效率等指標,他們不希望被應用東縛而應用開發者則更注重業務邏輯的實現,他們不希望被具體的平臺“鎖定”。為了滿足雙方的需求,區塊鏈介面卡的存在必不可少。

區塊鏈造配器可以將不同鏈的鏈外互動介面統一到相同的協議下, 使得應用開發者可以在相同的框架中構建應用。在區塊鏈介面卡的幫助下,開發者可以在不轉變思維的情況下,上手在一個新的平臺上進行開發;他們只需付出少量的學習成本去閱讀某個具體鏈的擴充套件方法,就可以方便地整合該鏈的特殊功能。

2.服務中介軟體

服務中介軟體是以“擴充套件包”形式存在的基礎功能模組,它完成了某個細粒度服務的具體實現。

例如,當某個應用開發者想要完成某個去中心化資產管理的功能時,他僅需引入區塊鏈互動中介軟體,並對應用側提供交易查詢、賬戶查詢、交易發起等介面,即可專心開發客戶端的具體功能。

當某個應用開發者想要完成分散式資料管理的功能時,他需要引入儲存管理中介軟體與區塊鏈互動中介軟體,並對應用側提供資料管理、資料摘要上鍊等功能,即可支援實現去中心化資料上鍊與儲存的功能。

上述的服務中介軟體在初期將會以播件、獨立專案的形式為開發者提供,後期將會以應用商城的形式存在。服務中介軟體可以大大加速區塊鏈應用的開發,也是開發體系得以繁榮的根本所在。

3.區塊鏈應用

區塊鏈應用指的是某個基於區塊鏈開發的應用例項。它是直接面對使用者提供功能的服務。為方使人們使用區塊鏈提供支援。常見的區塊鏈應用包括區塊鏈瀏覽器、區塊鏈存證服務、區塊鏈資產管理工具等等。這些應用在區塊鏈誕生以來,為區塊鏈的使用和普及發揮了巨大的作用,一些應用甚至成為了區塊鏈專案的標配。

在與服務中介軟體的關係上,兩者之間並沒有嚴格的界限。當應用開發者認為時機成熟時,他使可以將自己的應用或其中的一部分包裝成服務中介軟體。供其他應用開發者使用;開發者亦可以對不同的服務中介軟體進行封裝,以實現特定的區塊鏈應用。

紙貴科技在對區塊鏈的探索過程中,亦積累了一系列的區塊鏈應用,並將持續以行業應用或服務中介軟體的形式服務使用者或回饋社羣。

更多區塊鏈資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;