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