張建華
(廣西財經學院實驗教學中心 廣西壯族自治區南寧市 530007)
大型儀器設備精密貴重,對教學、科研等有著重要作用。在事業單位國有資產管理中,明確要求設備的各種租借、轉讓必須履行嚴格的審批手續,統一核算和管理。這些情況對大型設備的開放共享提出了更高的挑戰。同時,我國經濟已邁入一個全新的階段:建設現代化經濟體系,構建新發展格局。而對儀器設備進行合理的配置、加大共享共用力度,充分發揮資產使用效能,是實現我國社會經濟高質量發展的重要舉措。
目前,大部分單位已經擁有成熟的儀器設備管理系統,可以很好地處理入賬、劃撥等業務。然而這些系統卻無法解決設備在不同機構之間的共享問題。不同單位之間進行設備共享首先需要對設備進行統一認證和管理。同時,由于存在設備的監管、評估不到位等問題,使得設備流失、亂用、私用現象時有發生,在一定程度上影響了設備的開放共享力度。
在文獻[1][2]中,設備在不同單位之間的共享是通過有償支付、提前預約等方式實現,并未真正實現設備在不同單位之間的共享。而區塊鏈具有多用戶、防篡改等特性,已經在智能交通、醫療、銀行證券等行業取得了不錯的研究進展[3]。因此,本文將區塊鏈技術應用到大型儀器設備的開放共享建設中,旨在加大設備的使用效能,減少資源消耗。
本文針對實體設備數字化、認證和共享等關鍵過程,提出多機構參與的專有區塊鏈網絡——E2SBN(Exclusive Entity Sharing Block Network,實體共享區塊鏈專有網絡)。E2SBN是由多個機構用戶(Organization User,OU)構成的聯盟區塊鏈。E2SBN采用高效率的PBFT(Practical Byzantine Fault Tolerance,實用拜占庭容錯)作為共識算法。E2SBN所有節點完全對等,無特權節點。
E2SBN的基礎是分布式賬本(Ledger)。賬目是所有設備相關的數據記錄集合。Ledger存儲記賬數據,以數據區塊形式組織。每個區塊由一定數量記賬記錄組成,這些記錄具備時序性。為了高效率進行數據查詢,創建了數據庫索引(DB Indices)。OU通過PBFT分布式P2P網絡組織起來,機構用戶是全節點,維護一份完整的Ledger并運行完整的PBFT網絡客戶端。E2SBN是開放的網絡,網絡節點允許動態變動。
PBFT網絡承載了應用層的智能合約(Smart Contract)。智能合約允許對賬本數據執行事務操作,支持豐富的應用開發。智能合約之上是DApp(Decentralized Application,去中心化應用),E2SBN包含設備租借(Lease)、設備捐贈(Donate)、設備查詢(Query)等基礎DApp。
實體設備進入到區塊鏈,必須進行數字化描述。要對實體設備進行抽象定義,設備信息上鏈,并且由多個機構進行實地核實方可記賬。本文3.4節對設備上鏈進行闡述。
E2SBN是由指定范圍許可的區塊鏈網絡組成一種非公開的聯盟鏈,共識不需要通過獎勵機制實現。設備共享是復雜的業務性系統,區塊產出效率直接決定系統吞吐能力、響應速度,甚至是可用性。許可的區塊鏈網絡,參與的機構是有限、可控的,具備一定現實信任機制,因此共識算法不考慮節點完全不可信、不可控的場景。
綜合安全性和效率,E2SBN選擇PBFT作為共識算法。PBFT是一種分布式系統的一致性算法,允許少數節點(少于1/3總節點數)失效或者欺騙,而可以正常工作,保持一致性。PBFT集群的事務請求具備嚴格有序性;PBFT的整個通信復雜度是O(N2),對于E2SBN網絡是可以接受的效率。
機構加入需要PBFT網絡中節點做出投票決定。申請機構向任何在網絡中的OU發出申請,并提供證明其身份的文件。接收加入申請的機構用戶稱為背書節點。背書節點對申請機構提交的信息進行核驗,若同意其加入,則在E2SBN網絡中發起針對申請的投票,對身份證明文件簽名并附到申請表,存儲到文檔庫中。各個OU在節點自動校驗相關數據無誤后,由人工對申請機構的信息進行最后復核,決定是否同意申請機構加入。所有OU做出決定后,結果匯總到背書節點上,只有100%同意的結果才允許申請機構加入。作出同意決定的OU對申請信息進行背書簽名,并反饋給背書節點。背書節點最終生成一份符合申請機構的部署描述文件,最后使用申請機構公鑰對上述信息加密后輸出到文件。
申請機構拿到部署描述文件后,使用自身私鑰對文件進行解密,得到所有的簽名背書和機構信息。然后部署PBFT網絡客戶端,使用簽名背書文件作為憑證加入到網絡中;其他節點收到新節點加入請求后,對其背書文件進行校驗。當所有節點確認背書文件合法后,允許新節點正式加入網絡,并同步賬本數據到本地。

Proc 1: NODE-JOIN IN: 申請文件: af; 身份證明列表: p;OUT: 受理結果: f0; 部署描述文件:df;BEGIN T ← (解析申請文件af); sp[]← (使用T.pub作為公鑰對p依次進行簽名校驗); FOR (i, s) IN sp DO IF (s != T.sign[i]) THEN f0 ← 0; QUIT;ENDIF ENDFOR FOR (i, doc) IN p DO T.docs[i].uuid ← (計算doc的文件指紋) T.docs[i].sign ← (使用T.pub對T.docs[i].uuid內容簽名) ENDFOR c ← BROADCAST T; FOR ASYNC DO IF NOT (校驗T.docs[].uuid) AND (校驗T.docs[].sign) THEN WRITE 0 → c;ENDIF rs ← (用戶人工審核T基本信息)WRITE (rs, 背書簽名) → c; END v[]← WAIT c; IF (v[].rs === 1) THEN df ← (構建部署描述文件,帶上所有節點簽名信息v[].sign);f0 ← 1; ENDIF END
實體設備不能直接寫入區塊鏈,必須經過信息抽象和信息校驗。抽象實體設備需要在以下方面進行:設備所有者、類型、編碼、當前持有者、借出時間、到期時間,關聯的文檔列表(如照片、合格證書等證明文檔抽象信息的資料)。考慮到可能的業務擴展,可以根據需求適當增加抽象信息。

PROC 2: ASSET-VERIFY IN: 設備信息: a 附件列表:flist OUT: 校驗標識: f0; 設備ID:aid;BEGIN s0 ← (使用OU簽名對文檔信息簽名) c ← BROADCAST a, s0; FOR ASYNC DO IF NOT (校驗s0通過) THEN WRITE 0 → c;ENDIF rs ← (用戶人工審核a, flist)WRITE (rs, 背書簽名) → c; END r[]← FOR c ; IF (NUM(r[].rs = 1) > Tasset ) THEN EXEC init-asset WITH(a, r.endorsement[]) f0 ← 1; ELSE f0 ← 0;

ENDIF END
如過程2所示,發起設備校驗的OU需要對設備信息進行簽名,將設備信息和簽名廣播到其他OU,請求審核。每個節點收到設備初始化校驗請求后,對其進行合法性校驗,即校驗請求的簽名。通過人工審核方式,對設備信息、設備附件進行校驗,若校驗通過則反饋結果并提供背書簽名。發起節點收到的同意數量達到閾值Tasset后,即可宣布設備校驗通過。最后調用初始化設備的智能合約(init-asset),將設備信息存儲到區塊鏈上。
在節點加入、設備上鏈等流程中,存在需要附件存證的需求。因此如何保證存證文件(文檔Document)的真實性是重要問題。本文采用了鏈外存儲方式存放文檔。在智能合約執行時,獲取文檔的指紋,使用文檔擁有者的公鑰對文件指紋進行加密,保存到設備信息中。

PROC 3: DOC-SIGN-VERIFY IN: 文檔GUID: docid OUT: 校驗標識: f0; 影響設備:rlist;BEGIN d ← (通過docId到文檔庫查詢文檔); sf ← (讀取d的文件并進行文件簽名計算); sd ← (使用d的簽名者公鑰對sf進行簽名校驗); IF (sd = d.sign) THEN FOR blk IN (包含d的區塊) DO VerifyDoc(d, true); LogDocVer(d, 時間戳); UpdateDoc (d);ENDFOR f0 ← 1; ELSE PushToBlackList(d) f0 ← 0; ENDIF END
如過程3所示,根據文檔ID從文檔庫中查詢文檔信息,若文檔已標記刪除則不予處理。讀取文檔內容使用指紋算法輸出文檔指紋,再使用作者的公鑰對簽名進行校驗。校驗通過的文檔,在區塊鏈上記錄本次校驗過程,并更新文檔庫的校驗次數。而校驗失敗的文檔,則會加入到黑名單中。
通過專有區塊鏈聯盟網絡,構建一種高可信的共享方法。利用區塊鏈網絡的對等、安全加密、協同共識等特性,實現開放、高度自治、可擴展的資源共享聯盟。通過對核心架構分析、實體設備數字化以及網絡節點擴展等關鍵過程的深入研究,得出E2SBN是一種可應用的專有區塊鏈網絡架構。