方 軼,叢林虎,楊珍波
1(海軍航空大學(xué),煙臺 264001)
2(92349 部隊(duì),淄博 255100)
2008年,中本聰發(fā)表了一篇名為《Bitcoin:A Peerto-Peer Electronic Cash System》的論文,提出了一種基于密碼學(xué)的電子貨幣,并命名為比特幣(Bitcoin)[1].區(qū)塊鏈(Blockchain)技術(shù)作為比特幣的底層技術(shù),包含了P2P、分布式存儲、共識機(jī)制、智能合約、密碼學(xué)等計(jì)算機(jī)技術(shù),具有去中心化、匿名性、存儲數(shù)據(jù)不可篡改、可追溯的特點(diǎn)[2],使區(qū)塊鏈成為近些年來信息技術(shù)中最受關(guān)注的焦點(diǎn)之一并使其迅速發(fā)展.
最初區(qū)塊鏈技術(shù)更多地被應(yīng)用在金融領(lǐng)域,能夠使交易不通過第三方可信任機(jī)構(gòu)完成,同時還能很大程度上確保交易的匿名性、交易數(shù)據(jù)安全以及交易數(shù)據(jù)可追溯.如今,區(qū)塊鏈技術(shù)已經(jīng)成為又一項(xiàng)能夠引領(lǐng)信息時代變革的新技術(shù),其應(yīng)用已經(jīng)不僅僅局限于數(shù)字金融領(lǐng)域.在醫(yī)療數(shù)據(jù)存儲領(lǐng)域[3],薛騰飛等人進(jìn)行了基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享模型研究,為實(shí)現(xiàn)智慧醫(yī)療以及醫(yī)療大數(shù)據(jù)提供了基礎(chǔ)平臺;在能源領(lǐng)域[4]方面,張俊等人在智能分布式電力能源系統(tǒng)中采用區(qū)塊鏈技術(shù),提出了一種分布式存儲方案;同時區(qū)塊鏈技術(shù)在身份認(rèn)證[5]、投票系統(tǒng)[6]等方面有著廣闊的應(yīng)用前景.然而仍然有許多領(lǐng)域還未進(jìn)行區(qū)塊鏈技術(shù)應(yīng)用方面的探索,尤其是在軍事、氣象、地理等對數(shù)據(jù)安全性要求較高的領(lǐng)域還存在著很大的研究空間.
相比于區(qū)塊鏈研究的熱度,對智能合約的研究大多是基于區(qū)塊鏈技術(shù)上進(jìn)行的.研究內(nèi)容主要是智能合約的運(yùn)行環(huán)境、技術(shù)平臺、合約協(xié)議以及應(yīng)用場景推廣等方面[7].本文主要研究了基于區(qū)塊鏈的數(shù)字化智能合約應(yīng)用,針對航空導(dǎo)彈業(yè)務(wù)場景進(jìn)行了區(qū)塊鏈系統(tǒng)及智能合約的開發(fā).
總體上,一個區(qū)塊鏈應(yīng)用主要由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、激勵層、合約層和應(yīng)用層[8],具體如圖1所示.本文所做的主要是合約層的工作.
圖1 區(qū)塊鏈基本架構(gòu)
按照區(qū)塊鏈網(wǎng)絡(luò)的開放程度,區(qū)塊鏈可以分為以下三類:公有鏈、聯(lián)盟鏈和私有鏈.區(qū)塊鏈技術(shù)隨著比特幣的提出進(jìn)入到人們的視野,近些年來有許多區(qū)塊鏈研究人員、基金會、企業(yè)、聯(lián)盟以及活躍的區(qū)塊鏈愛好者在區(qū)塊鏈開源平臺方面進(jìn)行了大量的工作,出現(xiàn)了諸多優(yōu)秀的區(qū)塊鏈平臺,如公有鏈平臺以太坊(Ethereum)、聯(lián)盟鏈平臺超級賬本Hyperledger.
2013年末,年僅19 歲的俄羅斯程序員Vitalik Buterin發(fā)布了Ethereum 初版白皮書,標(biāo)志著Ethereum 項(xiàng)目正式啟動.Ethereum 平臺使用的加密貨幣Ether (以太幣)也被人們稱為第二代加密貨幣[9].
以太坊平臺實(shí)現(xiàn)的突破就是它支持用戶自行編寫智能合約,發(fā)行自己的數(shù)字貨幣.以太坊平臺允許用戶使用Sodility 編程語言編寫智能合約.Sodility 是一種語法類似JavaScript 的高級語言,并且是圖靈完備的.編寫好的智能合約運(yùn)行于EVM (以太坊虛擬機(jī)) 中,EVM 是一個沙盒環(huán)境,可以嚴(yán)格控制內(nèi)部訪問權(quán)限,保證智能合約運(yùn)行時的安全.
區(qū)塊鏈中引入了共識機(jī)制.共識機(jī)制的作用是在決策權(quán)高度分散的去中心化系統(tǒng)中使各個節(jié)點(diǎn)高效地達(dá)成共識,保持所有分布式賬本數(shù)據(jù)的同步.區(qū)塊鏈中使用的共識機(jī)制主要有:PoW (工作量證明機(jī)制)、PoS(股權(quán)證明機(jī)制)、DPoS (股份授權(quán)證明機(jī)制)、PBFT(實(shí)用拜占庭容錯算法)[10].比特幣與以太坊所使用的都是PoW 共識算法.
Linux 基金會開原組織于2015年12月啟動了名為Hyperledger 的開源項(xiàng)目[11],意在多方共同打造區(qū)塊鏈技術(shù)的企業(yè)級應(yīng)用平臺,至今已匯集了眾多行業(yè)企業(yè)精英.Hyperledger 中5 個重要子項(xiàng)目如表1.
表1 Hyperledger 重要子項(xiàng)目信息
其中Fabric 社區(qū)活躍度最高,版本更新最快,采用了模塊化架構(gòu)設(shè)計(jì),支持可插拔組件的開發(fā)與使用.Fabric 的主要組件包括:客戶端(Client)、網(wǎng)絡(luò)節(jié)點(diǎn)(Peer)、CA (Certificate Authority)節(jié)點(diǎn)和排序服務(wù)節(jié)點(diǎn)(Orderer).
其中客戶端的主要作用是和Fabric 系統(tǒng)進(jìn)行交互,實(shí)現(xiàn)對區(qū)塊鏈系統(tǒng)的操作.客戶端主要有命令行客戶端(CLI)以及用Fabric SDK 開發(fā)的應(yīng)用客戶端.網(wǎng)絡(luò)節(jié)點(diǎn)是區(qū)塊鏈去中心化P2P 網(wǎng)絡(luò)中的對等節(jié)點(diǎn),按照功能可以分為背書節(jié)點(diǎn)(Endorser)和確認(rèn)節(jié)點(diǎn)(Committer).背書節(jié)點(diǎn)主要對交易提案進(jìn)行模擬執(zhí)行以及背書驗(yàn)證.確認(rèn)節(jié)點(diǎn)主要負(fù)責(zé)驗(yàn)證交易的合法性,并更新和維護(hù)區(qū)塊鏈數(shù)據(jù)與賬本狀態(tài).
CA 節(jié)點(diǎn)主要負(fù)責(zé)為Fabric 網(wǎng)絡(luò)中的成員提供基于數(shù)字證書的身份信息,可以生成或取消成員的身份證書.Fabric 可以通過CA 節(jié)點(diǎn)實(shí)現(xiàn)節(jié)點(diǎn)權(quán)限控制的管理.
排序服務(wù)節(jié)點(diǎn)主要負(fù)責(zé)對各個節(jié)點(diǎn)發(fā)送的交易提供排序服務(wù),并使所有記賬節(jié)點(diǎn)達(dá)成共識.之后排序節(jié)點(diǎn)按照一定規(guī)則確定交易順序之后,將數(shù)據(jù)發(fā)送給各個節(jié)點(diǎn),把交易數(shù)據(jù)持久化到區(qū)塊鏈賬本中.
各個組件相互關(guān)系如圖2所示.
圖2 Fabric 組件關(guān)系示意圖
以太坊與超級賬本是兩個在區(qū)塊鏈技術(shù)發(fā)展過程中具有劃時代意義的項(xiàng)目,以太坊的出現(xiàn)標(biāo)志著區(qū)塊鏈進(jìn)入到2.0 時代,超級賬本項(xiàng)目則代表區(qū)塊鏈3.0 時代.除此之外,還有許多區(qū)塊鏈平臺,如比特股(BitShares)[12]、瑞波幣(Ripple)[13]、以及中國的趣鏈(Hyperchain)[14]活躍于世界比特幣舞臺上.表2是幾種區(qū)塊鏈平臺的對比.
要將區(qū)塊鏈技術(shù)應(yīng)用于部隊(duì)導(dǎo)彈業(yè)務(wù)數(shù)字化登記工作中,首先需要選擇合適的開發(fā)平臺.根據(jù)部隊(duì)實(shí)際情況,選用聯(lián)盟鏈開發(fā)平臺Hyperledger Fabric 更符合部隊(duì)實(shí)際,因?yàn)槁?lián)盟鏈相比公有鏈和私有鏈具有用戶證書頒發(fā)、用戶身份識別的功能,具有PKI 體系的認(rèn)證機(jī)制,能有效控制入網(wǎng)用戶的各種權(quán)限.
表2 部分區(qū)塊鏈平臺對比
1994年,Szabo N 首次提出了智能合約(smart contract)的概念[15].智能合約的本質(zhì)是一段運(yùn)行于網(wǎng)絡(luò)中的模塊化、可重用、自動執(zhí)行的腳本代碼,同時它還具有兩個重要的特點(diǎn):圖靈完備與沙箱隔離.也正是由于智能合約的特點(diǎn),使其在被提出的初期并沒有得到廣泛的關(guān)注與應(yīng)用.隨著比特幣、區(qū)塊鏈以及各種區(qū)塊鏈開源平臺的出現(xiàn),才使得智能合約由概念逐步落地實(shí)現(xiàn),如今智能合約已經(jīng)成為區(qū)塊鏈應(yīng)用中的重要組成部分.
智能合約在區(qū)塊鏈應(yīng)用中的地位相當(dāng)于現(xiàn)實(shí)生活中的合同,加入?yún)^(qū)塊鏈的用戶都要遵照智能合約來完成特定的行為,開發(fā)者可以通過編寫智能合約規(guī)定用戶的行為.智能合約開發(fā)完成后需要部署于區(qū)塊鏈網(wǎng)絡(luò)中,部署后的智能合約對用戶是不可見的,保證了智能合約的隱私性,開發(fā)者可以在使用過程中對智能合約進(jìn)行修改、升級.
在Fabric 中,智能合約也被稱為Chaincode (鏈碼),即鏈上代碼,主要分為系統(tǒng)鏈碼和用戶鏈碼,在區(qū)塊鏈應(yīng)用開發(fā)中設(shè)計(jì)并編寫的鏈碼指的是用戶鏈碼.在Fabirc 中,訪問、修改、查詢賬本都是通過調(diào)用部署的鏈碼完成的,一般使用Go 語言編寫,通過Fabric 官方提供的API,實(shí)現(xiàn)規(guī)定接口的代碼,這些API 位于Fabric 源碼中的Shim 包下.同時,鏈碼之間也可以相互調(diào)用.與以太坊中的智能合約一樣,Fabric 中鏈碼也運(yùn)行于一個沙盒環(huán)境——Docker 容器中,與背書節(jié)點(diǎn)的運(yùn)行互相隔離.目前Fabric 支持使用Go、Java、Node.js 三種編程語言進(jìn)行鏈碼開發(fā),其中Go 語言是支持最好、最穩(wěn)定的,因此本文選擇Go 語言進(jìn)行Fabric 鏈碼的開發(fā).Fabric 中智能合約的運(yùn)行情況如圖3所示.
圖3 智能合約執(zhí)行流程圖
首先,用戶通過客戶端(SDK/CLI)發(fā)起一個提案,背書節(jié)點(diǎn)通過調(diào)用Shim 包的方法創(chuàng)建賬本仿真交易執(zhí)行內(nèi)容,并通過Shim 包對智能合約進(jìn)行初始化和參數(shù)調(diào)用;背書節(jié)點(diǎn)模擬提案執(zhí)行,分別執(zhí)行讀賬本和寫賬本操作,模擬更新狀態(tài)數(shù)據(jù);若返回執(zhí)行成功,則開始執(zhí)行背書操作,若返回失敗,返回錯誤碼500;背書節(jié)點(diǎn)對交易結(jié)果進(jìn)行背書簽名,并將帶有背書結(jié)果和背書簽名的交易提案返回客戶端進(jìn)行背書認(rèn)證.
目前,部隊(duì)航空導(dǎo)彈業(yè)務(wù)登記工作形式主要是手工登記.手工登記方式存在著諸多問題及安全隱患,如:存儲過于集中、數(shù)據(jù)溯源困難、筆跡不清、書寫習(xí)慣或格式不統(tǒng)一、重復(fù)填寫、易被篡改等.區(qū)塊鏈技術(shù)有著去中心化、數(shù)據(jù)可追溯、防篡改的特點(diǎn),因此基于區(qū)塊鏈技術(shù),對航空導(dǎo)彈業(yè)務(wù)登記工作進(jìn)行數(shù)字化,能夠很大程度上解決目前手工登記方式存在的“痛點(diǎn)”問題.本文以航空導(dǎo)彈業(yè)務(wù)為應(yīng)用場景,進(jìn)行區(qū)塊鏈架構(gòu)設(shè)計(jì)、智能合約設(shè)計(jì)與開發(fā).
根據(jù)區(qū)塊鏈的基本架構(gòu),合約層是部署于數(shù)據(jù)層、網(wǎng)絡(luò)層和共識層之上的.因此在對智能合約進(jìn)行設(shè)計(jì)之前,需要首先對區(qū)塊鏈架構(gòu)進(jìn)行設(shè)計(jì).
與傳統(tǒng)區(qū)塊鏈架構(gòu)相比,本文研究的某型航空導(dǎo)彈業(yè)務(wù)數(shù)字化登記中不需要出現(xiàn)類似于比特幣系統(tǒng)中貨幣的概念,因此不需要激勵層,合約層之上即為應(yīng)用層,二者通過客戶端(CLI/SDK)關(guān)聯(lián)起來.在傳統(tǒng)區(qū)塊鏈架構(gòu)的基礎(chǔ)上進(jìn)行具體設(shè)計(jì)與改進(jìn),如圖4所示.
圖4 某型航空導(dǎo)彈業(yè)務(wù)數(shù)字化登記區(qū)塊鏈架構(gòu)
在Fabric 中,有兩種支持KVS 存儲的數(shù)據(jù)庫可提供選擇使用,一種是默認(rèn)的LevelDB,另一種是可以配置選擇的CouchDB.這里選用的是CouchDB,因?yàn)镕abric 支持對CouchDB 的富查詢(Rich Query),同時CouchDB 還有圖形化管理界面,為開發(fā)人員提供了極大的便利,且CouchDB 支持JSON 數(shù)據(jù)格式,更適用于表格的數(shù)據(jù)存儲.Fabric 的網(wǎng)絡(luò)層中,節(jié)點(diǎn)間的P2P 網(wǎng)絡(luò)由Gossip協(xié)議實(shí)現(xiàn),在通道中的各個節(jié)點(diǎn)會持續(xù)廣播和接受Gossip 消息.通道(Channel)是Fabric 中重要的概念,多個節(jié)點(diǎn)之間可以組成一個通道,同一個節(jié)點(diǎn)也可以加入不同的通道.一個通道內(nèi)部的所有節(jié)點(diǎn)共同維護(hù)同一個賬本,通道與通道之間互相隔離.在本文中的研究中,預(yù)設(shè)計(jì)一個orderer 節(jié)點(diǎn),兩個組織Org1和Org2,每個組織都有兩個節(jié)點(diǎn)Peer0和Peer1,錨節(jié)點(diǎn)都是Peer0 節(jié)點(diǎn).兩個組織中的所有節(jié)點(diǎn)都加入到同一個通道channel1 中.P2P 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖5所示.
圖5 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
共識層使用的是PBFT 共識算法,PBFT 是一種考慮了拜占庭容錯的共識算法,能夠容忍網(wǎng)絡(luò)中存在最多三分之一的作惡節(jié)點(diǎn).相比PoW、PoS 等共識算法,PBFT 的效率更高.同時由于聯(lián)盟鏈規(guī)模相比公有鏈小很多,因此惡意節(jié)點(diǎn)對賬本同步的影響更大,使用PBFT 能更好地保證區(qū)塊鏈中各個節(jié)點(diǎn)有效達(dá)成共識.
區(qū)塊鏈應(yīng)用于傳統(tǒng)應(yīng)用最主要的區(qū)別是使用智能合約來實(shí)現(xiàn)主體業(yè)務(wù)邏輯,智能合約既是程序邏輯的主體,也是數(shù)據(jù)存儲的主體.航空導(dǎo)彈業(yè)務(wù)分為許多方面,現(xiàn)以某型航空導(dǎo)彈技術(shù)準(zhǔn)備中的氣密性檢查為例進(jìn)行智能合約設(shè)計(jì).
氣密性檢查即在某個時刻記錄下內(nèi)部壓力,然后進(jìn)行充氣,充到一定壓力值后保持一段時間,再記錄下壓力值.如果兩個壓力值之差小于某個閾值,說明該彈氣密性檢查結(jié)論為合格,否則為不合格.
智能合約必須要實(shí)現(xiàn)Init 接口和Invoke 接口,其中Init 是對智能合約進(jìn)行初始化,執(zhí)行的結(jié)果就是在狀態(tài)數(shù)據(jù)庫中創(chuàng)建一個數(shù)據(jù)庫,用來存放通過該智能合約寫入賬本的數(shù)據(jù),本文的智能合約設(shè)計(jì)中沒有考慮預(yù)先在數(shù)據(jù)庫中錄入數(shù)據(jù),因此Init 接口在實(shí)現(xiàn)過程中不需要進(jìn)行操作,只需要返回一個Success 消息即可;Invoke 接口是執(zhí)行交易的接口,在本文中的作用就是調(diào)用已編寫的函數(shù).
Invoke 接口的調(diào)用操作過程如圖6所示.
圖6 Invoke 接口調(diào)用操作過程示意圖
Invoke 接口需要客戶端輸入兩個參數(shù);函數(shù)名(Function)和函數(shù)所需參數(shù)(Parameter),智能合約中的Invoke 只需要通過Shim 包中的GetFunctionAnd Parameter 方法就能接收到客戶端傳入的函數(shù)名和函數(shù)所需參數(shù),再通過編寫Invoke 內(nèi)部的判別方法,就可以根據(jù)需要,通過輸入相應(yīng)的函數(shù)名來指定調(diào)用編寫好的函數(shù).Invoke 接口內(nèi)可提供調(diào)用的函數(shù)信息如表3所示.
根據(jù)某型航空導(dǎo)彈氣密性檢查操作過程以及實(shí)際業(yè)務(wù)需求,Invoke 接口中需要調(diào)用的自定義函數(shù)有:創(chuàng)建檢查記錄函數(shù)(Create)、根據(jù)導(dǎo)彈編號查詢檢查記錄(Query)、查詢某個編號導(dǎo)彈的時間戳(queryTime)、查詢某個編號導(dǎo)彈的不合格檢查記錄(queryJl)、查詢某個編號導(dǎo)彈氣密性檢測記錄的創(chuàng)建者(queryCreator)等.
表3 Invoke 接口提供的函數(shù)信息
選擇Ubuntu16.04 作為開發(fā)、運(yùn)行環(huán)境,Fabric 版本為最穩(wěn)定的v1.2,Go 語言使用穩(wěn)定版本1.11.4.根據(jù)業(yè)務(wù)實(shí)際情況以及對智能合約的設(shè)計(jì)結(jié)果,開發(fā)中需要用到的Shim 包API 如表4所示.
表4 開發(fā)所需部分API
某型航空導(dǎo)彈技術(shù)準(zhǔn)備中的氣密性檢查的過程中,在氣密性檢查中,需要記錄的信息有:導(dǎo)彈編號、檢查日期、檢查人、開始時間、開始時壓力(0.1±0.005 Mpa)、結(jié)束時間、結(jié)束時壓力(Mpa)、壓力差(Mpa)以及結(jié)論(壓力差≤0.01 Mpa 為合格),共計(jì)9 個數(shù)據(jù)項(xiàng).鏈碼中定義數(shù)據(jù)格式代碼段如下:
壓力差與結(jié)論需要智能合約內(nèi)部的Create 函數(shù)進(jìn)行判斷的,首先計(jì)算壓力差,再根據(jù)壓力差與閾值的關(guān)系進(jìn)行結(jié)論的判斷.
根據(jù)前文的設(shè)計(jì),必須實(shí)現(xiàn)的Init 接口代碼段如下:
根據(jù)智能合約設(shè)計(jì)結(jié)果,Invoke 接口內(nèi)部的具體實(shí)現(xiàn)代碼段如下:
利用Shim 包所提供的API,對每個自定義的功能函數(shù)進(jìn)行編寫,然后進(jìn)行部署調(diào)試.在CLI 客戶端中輸入相應(yīng)指令,即可得到運(yùn)行結(jié)果.
首先通過docker exec -it ci bash 命令進(jìn)入到客戶端CLI 容器中,使用peer chaincode install 安裝鏈碼,安裝時需要指定通道.本文創(chuàng)建的通道名為channel1;再利用peer chaincode init 命令,對智能合約進(jìn)行初始化.由于之前在實(shí)現(xiàn)Init 接口時沒有要求CLI 傳入任何參數(shù),因此輸入Function 參數(shù)和Args 參數(shù)數(shù)組時為空即可.初始化完成后,在CouchDB 中創(chuàng)建了關(guān)于該智能合約的數(shù)據(jù)庫;最后使用peer chaincode invoke 命令,輸入通道名稱、智能合約名稱以及需要傳入的Function 參數(shù)以及Args 參數(shù)數(shù)組,之后即可得到查詢結(jié)果,如圖7所示.
圖7 在客戶端中運(yùn)行智能合約
智能合約的設(shè)計(jì)與開發(fā)是Fabric 平臺的核心工作之一,安裝在區(qū)塊鏈網(wǎng)絡(luò)的背書節(jié)點(diǎn)上,類似于社會中的法律合同,對業(yè)務(wù)進(jìn)行了強(qiáng)制性的規(guī)范.通過智能合約的設(shè)計(jì)、開發(fā)與演示可以看出,相比于紙質(zhì)手工登記,使用區(qū)塊鏈技術(shù)既具有傳統(tǒng)數(shù)字化登記系統(tǒng)有利于存儲、格式規(guī)范、登記速度快等優(yōu)點(diǎn),同時又實(shí)現(xiàn)了去中心化的分布式存儲方式保證了登記數(shù)據(jù)可追溯、不可篡改.然而要將區(qū)塊鏈技術(shù)進(jìn)一步應(yīng)用于航空導(dǎo)彈業(yè)務(wù)登記領(lǐng)域,還需要進(jìn)一步研究探索,后續(xù)將要進(jìn)行的工作主要有:使用國密SM2和SM3 算法對Fabric 中的加密模塊進(jìn)行改進(jìn),實(shí)現(xiàn)加密算法的“國產(chǎn)化”,進(jìn)一步提高區(qū)塊鏈網(wǎng)絡(luò)的安全性與可靠性;對PBFT 共識算法進(jìn)行優(yōu)化,降低節(jié)點(diǎn)之間達(dá)成共識的耗時.
在航空導(dǎo)彈業(yè)務(wù)場景中,本文設(shè)計(jì)并實(shí)現(xiàn)的區(qū)塊鏈系統(tǒng)及智能合約能夠?qū)崿F(xiàn)無人監(jiān)督的業(yè)務(wù)數(shù)據(jù)登記錄入工作,免去了對于第三方監(jiān)督的依賴.同時還能夠保證數(shù)據(jù)的可靠性、完整性以及可追溯性,提高了數(shù)據(jù)的可信度并提高了防止數(shù)據(jù)被惡意篡改能力.引入的共識機(jī)制能夠保證數(shù)據(jù)來源的高可信度,可以有效地防止惡意節(jié)點(diǎn)對數(shù)據(jù)系統(tǒng)進(jìn)行破壞.本文設(shè)計(jì)的系統(tǒng)使用一種NoSQL 數(shù)據(jù)庫:CouchDB 作為存儲環(huán)境,相比于傳統(tǒng)使用SQL 數(shù)據(jù)庫的數(shù)據(jù)記錄軟件,能夠有效防止SQL 注入攻擊.
智能合約是對相關(guān)業(yè)務(wù)或邏輯的代碼實(shí)現(xiàn),其目的在于不依賴于可信任的第三方執(zhí)行各種操作.如果被惡意修改會造成業(yè)務(wù)或邏輯混亂,甚至?xí)ο到y(tǒng)造破壞,因此對智能合約的保護(hù)是一項(xiàng)重要內(nèi)容.本文提出的智能合約隱私保護(hù)措施主要是將智能合約安裝并運(yùn)行于Docker 上.Docker 是一種容器,能夠?qū)崿F(xiàn)虛擬化但又不同于虛擬化.容器是完全沙箱機(jī)制的,之間不存在任何接口.同時在Linux 系統(tǒng)內(nèi)核中也存在著分別實(shí)現(xiàn)對容器資源隔離和資源限制的功能.智能合約運(yùn)行在Docker 容器上時,能夠保證智能合約的獨(dú)立性,同時對于已經(jīng)安裝在Docker 上的智能合約對外界也是不可見的,即使修改智能合約代碼,已經(jīng)安裝的智能合約也不會受到影響.
本文針對部隊(duì)傳統(tǒng)航空導(dǎo)彈業(yè)務(wù)登記中存在的問題與隱患,提出了基于區(qū)塊鏈技術(shù)對傳統(tǒng)登記方式進(jìn)行數(shù)字化的方案,并完成了智能合約的設(shè)計(jì),最后對某型航空導(dǎo)彈氣密性檢測登記進(jìn)行了智能合約的開發(fā)與測試,對區(qū)塊鏈技術(shù)在部隊(duì)工作中的應(yīng)用進(jìn)行了初步探索,安全性分析證明了該方案具有較好的可行性與有效性.