姚勇鋒,孫恩昌 ,張延華 ,李 萌 ,曾 濤
(1.北京工業(yè)大學 信息學部,北京 100124; 2.中建科技集團有限公司,北京 100070)
裝配式建筑作為一種新興的建筑施工方法正在成為現代建筑業(yè)發(fā)展的主流方向。由于我國裝配式建筑發(fā)展起步較晚,國內的技術標準體系不健全,標準化程度過低,缺乏統(tǒng)一的裝配式建筑行業(yè)標準,導致建設過程中整體協(xié)調性不足,企業(yè)間的配合度非常低,阻礙了裝配式建筑的發(fā)展進程[1]。
針對這一問題,行業(yè)主管單位、龍頭企業(yè)、標準權威機構和大學等單位發(fā)揮產學研用優(yōu)勢,以解決標準供給側改革為突破口逐步推進裝配式建筑的行業(yè)標準化水平。同時,也隨著新一輪科技革命和產業(yè)變革步伐,利用新一代信息技術推進建筑行業(yè)標準化管理水平,促進建筑行業(yè)標準的全生命期、高效能管理。
隨著標準正式發(fā)布、使用的企業(yè)不斷增加,標準也需要不斷地更新,各參編單位聯合起來準備建立一個標準管理系統(tǒng),對標準文件存儲、標準版本更新以及標準共識進行統(tǒng)一的信息化管理。但傳統(tǒng)的標準信息化管理系統(tǒng)都是將大量標準信息存入數據庫中,利用計算機技術和網絡信息技術為相關單位及人員提供全面快速的標準管理服務,進而提高工作效率[2]。而標準都是權威性的重要文件,這些中心化的標準管理系統(tǒng)存在標準文件易篡改的問題,標準共識過程中也存在信任問題,且標準建立后,更新機制緩慢,其完善可能跟不上實際應用的節(jié)奏,系統(tǒng)需建立與標準使用方的服務通道,提高標準小版本快速修改的效率,促進標準的與時俱進。
以推動高質量發(fā)展標準體系為中心,為構建新一代信息技術為基礎的標準全生命期、高效能管理做出有益的探索,本文提出并實現了一種基于聯盟鏈的建筑行業(yè)標準管理系統(tǒng)的設計方案,該系統(tǒng)將每個參編單位綁定為一條聯盟鏈,聯盟鏈中各節(jié)點組織可以通過Web端上傳新版標準文件至IPFS(inter planetary file system,星際文件系統(tǒng))賬本中,當有標準文件上傳時,各節(jié)點需要對新版標準進行投票共識,共識達成后將投票結果和標準哈希值通過智能合約存儲在區(qū)塊鏈中,同時建立標準分享社區(qū),將新標準發(fā)布到相應的分享社區(qū)子系統(tǒng)內,可供各建筑子公司使用,并發(fā)表相應意見。此外,系統(tǒng)還為聯盟節(jié)點設立了相應的查詢系統(tǒng)。
區(qū)塊鏈來源于比特幣,是對比特幣底層技術的抽取,區(qū)塊鏈本質上是一個對等網絡(peer to peer,p2p)的分布式賬本數據庫[3]。區(qū)塊鏈是將區(qū)塊和區(qū)塊通過鏈式結構連接起來,每個區(qū)塊中包含區(qū)塊特有的一些信息和交易記錄數據,它具有去中心化、交易公開透明、開放共識、數據無法篡改等特點。用戶不需要了解對方身份就可以和對方進行交易,且交易一旦達成就會公開廣播至全網的所有節(jié)點中,所有節(jié)點達成共識后將把該次交易記錄復制到各自節(jié)點的賬本中。因此,區(qū)塊鏈網絡中的每個節(jié)點都有一個完整的數據賬本,要想修改區(qū)塊鏈中的數據是十分困難的[4]。
根據區(qū)塊鏈的使用對象、準入規(guī)則、節(jié)點規(guī)模等可將區(qū)塊鏈劃分為公有鏈、聯盟鏈、私有鏈三種類型[5]。
公有鏈是完全去中心化的,任何互聯網用戶都能夠隨時加入并任意讀取數據,能夠發(fā)送交易和參與區(qū)塊的共識過程,比特幣和以太坊等虛擬貨幣系統(tǒng)就是典型的公有鏈系統(tǒng)[6]。聯盟鏈則是部分去中心化的,僅對特定的組織團體開放的區(qū)塊鏈系統(tǒng),典型的聯盟鏈系統(tǒng)有超級賬本[7]和EOS(enterprise operation system, 商用分布式設計區(qū)塊鏈操作系統(tǒng))等。而私有鏈則是中心化的區(qū)塊鏈系統(tǒng),由某個組織或機構控制的區(qū)塊鏈,目前市場上尚未出現與用戶業(yè)務應用直接相關的典型私有鏈應用[8]。
智能合約是運行在區(qū)塊鏈之上的計算機協(xié)議,等價于一段事先被規(guī)定好邏輯和條款的計算機代碼被激活運行的狀態(tài)。它取代了傳統(tǒng)的紙質合同,減少了在合約制定、控制協(xié)議和執(zhí)行效率上的人工花費與計算成本[9]。
智能合約通常都是預定義的,將各參與方的規(guī)定的業(yè)務邏輯化為機器可讀的數字代碼形式,運行在計算機網絡中,用戶之間無需第三方機構參與即可發(fā)生可信交易,減少了對中介的依賴,也提高了交易的安全性。
IPFS是一種點對點的分布式文件系統(tǒng)。它具有內容可尋址、版本化、點對點超媒體等特點,目標是補充甚至取代超文本媒體傳輸協(xié)議(hyper text transfer protocol,HTTP),構建更快、更安全、更自由的互聯網時代[10]。
IPFS的基于內容尋址方式使得用戶無需關心服務器位置、文件存儲名字、文件路徑等因素,當有文件上傳至IPFS節(jié)點時,系統(tǒng)會基于文件內容計算出唯一的加密哈希值,此哈希值是代表文件內容的數字指紋,可驗證文件內容是否被篡改,哪怕只修改文件的一個字符,哈希值也會發(fā)生巨大變化。當有節(jié)點想下載某一文件時,只需輸入文件哈希值,系統(tǒng)會根據分布式哈希表找到文件對應的位置,驗證文件并將其取回。
根據實際的操作流程,本系統(tǒng)應包含標準文件管理、聯盟成員管理、標準投票共識、標準分享社區(qū)以及相應的數據查詢共5大模塊,由于系統(tǒng)包含聯盟成員投票共識操作,這種分布式的多節(jié)點協(xié)同操作往往都存在信任問題,傳統(tǒng)的中心化Web系統(tǒng)無法解決這一問題,采用數據庫的存儲方式也存在投票結果和標準文件被篡改的安全隱患,一旦聯盟成員的賬號泄露或是數據庫受到攻擊,很可能會對新標準有所影響,進而導致建筑在實際建設過程中遇到阻礙。
利用區(qū)塊鏈結合IPFS可解決上述的一系列問題。區(qū)塊鏈中的聯盟鏈可將聯盟組織成員以節(jié)點形式綁定,通過智能合約可驗證節(jié)點身份和約束各節(jié)點的業(yè)務邏輯操作,且聯盟鏈的每個節(jié)點都有一份相同的數據賬本,使得系統(tǒng)的被攻擊成本更高,具有更強的安全性。結合IPFS系統(tǒng)也能解決區(qū)塊鏈賬本無法存儲文件的難題,提高了系統(tǒng)的存儲性能。
圖1 系統(tǒng)架構圖
本文提出的基于聯盟鏈的建筑行業(yè)標準管理系統(tǒng)分為四層,分別為用戶層、應用層、業(yè)務邏輯層和數據存儲層,如圖1所示。其中用戶層分為聯盟內的節(jié)點用戶和聯盟外的非節(jié)點用戶,聯盟內節(jié)點用戶具有標準文件管理、發(fā)布投票、查詢記錄和管理分享社區(qū)后臺等功能,而聯盟外成員又分兩類,一類是想加入聯盟成為標準參編單位的其它單位組織,另一類則是分享社區(qū)中的各建筑子公司成員,負責將標準在使用過程中的信息反饋給聯盟鏈的標準參編單位。用戶通過B/S架構的Web應用與應用層交互,在應用層完成相應的業(yè)務請求,并將對數據進行封裝,通過HTTP、TCP/IP協(xié)議發(fā)送到業(yè)務邏輯層,在該層中完成相應數據業(yè)務操作,根據結果判斷數據的存儲位置,說通過后臺服務器和智能合約將數據發(fā)送到數據存儲層,最終將數據分別存儲在數據庫、區(qū)塊鏈和IPFS中,區(qū)塊鏈和IPFS系統(tǒng)都是以聯盟鏈的形式連接,各節(jié)點間形成對等式網絡結構[11]。
通過此架構設計為系統(tǒng)劃分了層次,優(yōu)化了系統(tǒng)結構,各層之間相互獨立又彼此協(xié)調,利用用戶層賦予系統(tǒng)內不同用戶不同權限,同時對外界用戶進行隔離,而其它三層打通了客戶端與數據底層之間聯系,以應用層為操作起點,利用業(yè)務邏輯層處理及分發(fā)數據,完成數據在底層三端的存儲,確保數據的安全性。
標準管理系統(tǒng)的整體流程如圖2所示,具體流程如下:
1)標準上傳階段:
標準上傳階段主要負責將某一聯盟成員的標準上傳到相應的數據庫和IPFS系統(tǒng)中,當聯盟中有成員完成對標準的編制或者更新時,登錄到該Web系統(tǒng)中,將標準文件、上傳日期、上傳單位、標準版本和備注等記錄信息上傳到數據庫中,同時標準文件自動上傳到IPFS系統(tǒng)中,IPFS會返回該文件唯一的加密哈希值,該哈希值作為文件的校驗信息,將其也存入數據庫中,其它節(jié)點可通過該哈希值在IPFS系統(tǒng)內下載該文件。
2)標準共識階段:
標準共識階段主要分為發(fā)布投票內容和投票共識兩個部分,首先由上傳標準的節(jié)點用戶發(fā)布投票,將標準文件版本、標準文件的加密哈希值、發(fā)布日期、發(fā)布人和發(fā)起投票請求等信息公布,在后臺驗證節(jié)點身份,通過后投票內容便發(fā)布成功,發(fā)起者通過系統(tǒng)內的郵件通知功能將新一輪的投票信息發(fā)送給該聯盟內的所有節(jié)點用戶。其它節(jié)點用戶收到郵件后便進入投票共識流程,其它節(jié)點通過投票中的文件加密哈希值到從上傳的IPFS節(jié)點中下載該文件,并通過文件驗證模塊驗證文件內容是否和上傳時一致,各節(jié)點需在智能合約所規(guī)定的時間內完成投票,投票結束后在智能合約判斷投票是否通過,通過后便將投票結果和文件的加密哈希存入區(qū)塊鏈和數據庫,失敗則只將投票結果存入數據庫。
3)標準應用階段:
新標準一旦在聯盟中達成共識,通過后臺服務器會自動傳到系統(tǒng)的分享社區(qū)子系統(tǒng)中,并發(fā)布相應公告,供各大建筑子公司使用,由各建筑公司內部員工使用并在社區(qū)中各單位板塊反饋意見,由相應的單位管理員收集本單位的有用反饋信息,定期將有用的反饋數據發(fā)布到對應標準版本的意見收集貼中,方便各聯盟成員進行新一輪的標準編制。此外,系統(tǒng)還具有加入聯盟和查詢功能,若有其它想加入聯盟組織的單位,可通過系統(tǒng)的加入聯盟功能實現,在得到聯盟組織所有節(jié)點用戶的一致同意后,便可加入到聯盟內部,參與具體的標準編制過程,并可在查詢系統(tǒng)中查詢相應投票結果、文件上傳記錄和聯盟信息。
圖2 標準管理系統(tǒng)流程圖
上
根據智能合約的強制執(zhí)行和去信任的特點,系統(tǒng)中涉及到多個節(jié)點的業(yè)務或是關鍵數據的存儲都是由智能合約實現,例如節(jié)點身份驗證、加入聯盟、投票共識和查詢系統(tǒng)等等,都是將其業(yè)務流程代碼化,部署到聯盟鏈的各個節(jié)點中,智能合約保證業(yè)務流程執(zhí)行中的正確性,而區(qū)塊鏈負責執(zhí)行后的數據安全存儲。
在區(qū)塊鏈中只能存儲類似于字符串的文本數據,無法保存文件類型的數據,所以采用分布式的IPFS文件存儲系統(tǒng)保存文件,通過后臺服務器建立IPFS與區(qū)塊鏈之間的聯系,區(qū)塊鏈負責保存文件的加密哈希值,區(qū)塊鏈、數據庫和IPFS系統(tǒng)三端協(xié)同保證文件安全性,而其它結構化的文本數據則存儲在數據庫和區(qū)塊鏈兩端。
在本系統(tǒng)的聯盟鏈中,涉及到數據存儲的節(jié)點分為背書節(jié)點、排序節(jié)點和錨節(jié)點三類,其中背書節(jié)點負責驗證交易,并對其進行簽名,排序節(jié)點負責打包交易,保證交易的順序,錨節(jié)點負責各節(jié)點之間的通信。區(qū)塊鏈的數據存儲過程如圖3所示,首先由背書節(jié)點調用客戶端發(fā)起交易,背書節(jié)點模擬執(zhí)行交易,將交易和執(zhí)行結果打包,驗證后發(fā)給客戶端,當所有背書節(jié)點對交易進行背書簽名后, 將打包后的數據發(fā)送給排序節(jié)點進行共識排序, 生成新區(qū)塊后將結果發(fā)送給聯盟通道中的所有節(jié)點,更新在各節(jié)點賬本中,保證各節(jié)點的一致性。
圖3 區(qū)塊鏈節(jié)點的數據存儲過程
本文基于上述系統(tǒng)設計,實現了一個基于聯盟鏈的建筑行業(yè)標準管理系統(tǒng),系統(tǒng)功能模塊如圖4所示,本系統(tǒng)在Hyperledger Fabric平臺搭建聯盟鏈,系統(tǒng)共有26個聯盟鏈節(jié)點和IPFS節(jié)點,實現了區(qū)塊鏈和IPFS的去中心化存儲功能,并結合Java語言開發(fā)Web管理系統(tǒng)。系統(tǒng)共包含區(qū)塊鏈、IPFS、標準管理系統(tǒng)三個后臺子系統(tǒng),IPFS與標準管理系統(tǒng)后臺采用Java語言編寫,而區(qū)塊鏈后臺由Go語言開發(fā)的智能合約控制,可由上層的Java后臺發(fā)起調用智能合約請求。本系統(tǒng)的區(qū)塊鏈采用Kafka共識機制,該算法通過排序節(jié)點接收聯盟鏈內的交易,并對其進行排序,執(zhí)行完交易后將交易結果保存在排序節(jié)點的本地日志中,最后利用p2p傳播方式將結果擴散給聯盟鏈的每個節(jié)點。系統(tǒng)共包含文件管理、加入聯盟、投票共識、查詢記錄和分享社區(qū)5大模塊。3個后臺同時運轉,各接口相互調用保證系統(tǒng)的正常運行以及數據的三方協(xié)同。
圖4 系統(tǒng)功能模塊
先在Linux系統(tǒng)下搭建Hyperledger Fabric開發(fā)環(huán)境,安裝Go語言、Git及Docker相關組件,下載Fabric源碼并進行編譯,然后在configtx.yaml配置文件中設置聯盟節(jié)點信息,定義區(qū)塊鏈網絡組織結構及創(chuàng)世區(qū)塊,在區(qū)塊鏈網絡中選擇適合多節(jié)點的Kafka算法作為共識機制,對網絡進行初始化后便可啟動網絡。然后在同樣環(huán)境下搭建IPFS節(jié)點集群,下載IPFS安裝包并進行解壓,對IPFS節(jié)點進行初始化并創(chuàng)建節(jié)點信息,搭建完多節(jié)點集群后輸入ipfs daemon啟動IPFS網絡。底層環(huán)境搭好后便可在其上開發(fā)相應功能。
標準文件管理模塊包含文件上傳、文件下載和文件校驗3個子功能,標準文件上傳界面如圖5所示,節(jié)點用戶錄入文件、上傳單位、上傳日期、上傳版本和備注等相應信息后,文件會上傳到IPFS系統(tǒng),IPFS經過特定算法后會返回一個以Qm開頭的46位文件哈希值,后臺將該文件哈希與其它的文件上傳信息存入數據庫中,其它節(jié)點用戶可根據該文件哈希在此模塊中下載或校驗文件。
圖5 標準上傳
用戶上傳新標準文件后,需在系統(tǒng)內發(fā)布相應的投票內容,利用郵件通知聯盟內各成員后,各用戶在智能合約規(guī)定的2天內完成投票,投票表決界面如圖6所示,利用投票合約在后臺綁定每個用戶節(jié)點身份,通過智能合約判定用戶投票是否有效,當某一節(jié)點用戶投票后,投票合約會調用相應的投票統(tǒng)計合約進行統(tǒng)計,達成投票結束條件時,該合約會自動統(tǒng)計投票贊成數是否超過三分之二,并給出文件信息是否入鏈的響應。
圖6 投票表決
分享社區(qū)子系統(tǒng)界面如圖8所示,該子系統(tǒng)采用Java中的MVC(model view controller,模型-視圖-控制器)設計模式和三層架構的開發(fā)方式,嵌入至本標準管理系統(tǒng)中,主要給各建筑子公司等施工單位的非節(jié)點用戶使用,負責提供標準實施過程中的使用數據,與節(jié)點用戶建立服務通道,解決標準更新機制緩慢的問題。用戶可在分享社區(qū)子系統(tǒng)中下載相應標準,并在各自的單位內部交流討論,發(fā)表并查看內部的帖子和評論等,聯盟鏈的節(jié)點用戶在分享社區(qū)子系統(tǒng)中是超級管理員身份,具有相應的刪除功能,收集意見的同時也需維護分享社區(qū)的秩序。
圖7 查詢投票結果
圖8 分享社區(qū)子系統(tǒng)
本文設計并實現的系統(tǒng)對標準進行了生命周期管理,信息化的標準管理方式和區(qū)塊鏈的共識機制提高了標準管理的效率,利用聯盟鏈和智能合約解決了標準共識過程中的身份信任問題,區(qū)塊鏈系統(tǒng)去中心化存儲也提高了系統(tǒng)的安全性,結合IPFS解決區(qū)塊鏈無法存儲文件的難題,將文件存儲在IPFS分布式文件管理系統(tǒng)中,在區(qū)塊鏈端存儲文件的數字指紋,進一步保證標準件的權威性。目前系統(tǒng)整處于測試運行階段,整體運行良好,但有聯盟外單位加入聯盟鏈時,智能合約無法實現智能更新聯盟鏈的節(jié)點用戶數量,各單位需要關閉區(qū)塊鏈,在聯盟中更新智能合約后重啟方可生效,未來將考慮在智能合約中實現自動更新新加入的節(jié)點信息,進一步優(yōu)化系統(tǒng)的擴展性。