聶野 毛世紅 張云軍 于書強
摘 要:研究了一種基于區(qū)塊鏈技術(shù)的新型電子輪機日志系統(tǒng)。系統(tǒng)可以定時定點連續(xù)性地自動提取船舶輪機日志相關(guān)的各項數(shù)據(jù),借助區(qū)塊鏈的點對點網(wǎng)絡(luò)進行自動上傳和加密,利用區(qū)塊鏈的不可篡改特性實現(xiàn)了輪機日志的全程留痕、便于追溯的需求。研究協(xié)助更加完整和安全的記錄輪機日志,提供更為方便的查詢分析方法,為船舶輪機日常管理和事故追溯提供支撐。
關(guān)鍵詞:輪機日志;區(qū)塊鏈;數(shù)字摘要;共識機制;智能合約
輪機日志是反映船舶機電設(shè)備運行和管理工作的原始記錄,是船舶的法定文件之一,是海事決策與監(jiān)管的主要憑借依據(jù),必須妥善保管。按照規(guī)定,輪機日志應(yīng)依時間順序逐頁連續(xù)記錄,不得間斷、遺漏、撕毀和增補,應(yīng)使用不褪色的藍(lán)色和黑色筆記錄填寫,數(shù)字和文字要準(zhǔn)確,字體清楚端正,計量單位采用國家法定計量單位。
目前船舶上的輪機日志主要是通過人工填寫的方式完成記錄,輪機長全面負(fù)責(zé)審查監(jiān)督輪機日志的記載及保管,船舶航行狀態(tài)信息的記錄由船員負(fù)責(zé)填寫,受船員主觀意識影響較大。在船舶發(fā)生險情時,狀態(tài)信息的記錄會面臨時間和情形限制,會導(dǎo)致船舶狀態(tài)信息記錄不完整、不正確的風(fēng)險。同時,紙質(zhì)化手工書寫船舶狀態(tài)數(shù)據(jù)的記錄方式不便于計算機識別、提取、處理,記錄的數(shù)據(jù)也不便于高效地查詢和分析。
在本研究中提出了一種基于區(qū)塊鏈技術(shù)的電子輪機日志系統(tǒng),系統(tǒng)將紙質(zhì)的輪機日志轉(zhuǎn)化為可靠存儲的電子輪機日志,為用戶安全方便的記錄、查詢、管理輪機日志提供幫助。
1系統(tǒng)結(jié)構(gòu)
輪機日志包含的內(nèi)容多且復(fù)雜,而且隨著科技發(fā)展需要記錄的內(nèi)容和類別會不斷變化,因此本研究沒有將輪機日志完全記入?yún)^(qū)塊鏈,而是采用數(shù)據(jù)庫存儲日志完整內(nèi)容,將日志的存儲路徑和數(shù)字摘要部分記入?yún)^(qū)塊鏈。根據(jù)以上思路,電子輪機日志系統(tǒng)包括日志服務(wù)模塊、區(qū)塊鏈平臺和數(shù)據(jù)庫,如圖1所示:
用戶按照不同的業(yè)務(wù)需求分為記錄人員、查詢?nèi)藛T和管理人員,用戶訪問日志服務(wù)模塊完成輪機日志的記錄、查詢和核驗等業(yè)務(wù)功能。日志服務(wù)模塊包括日志填寫、日志自動采集、日志保存、日志查詢、日志核查等業(yè)務(wù)功能模塊,通過數(shù)據(jù)庫相關(guān)接口完成日志數(shù)據(jù)的存儲工作,依據(jù)約定算法將日志存儲路徑和日志的數(shù)字摘要計算得到元數(shù)據(jù),調(diào)用區(qū)塊鏈平臺的智能合約實現(xiàn)元數(shù)據(jù)讀寫、系統(tǒng)權(quán)限驗證、系統(tǒng)數(shù)據(jù)核驗等功能。
區(qū)塊鏈平臺采用以太坊技術(shù)構(gòu)建,以太坊是一種基于智能合約的開放式區(qū)塊鏈平臺,開發(fā)者可以編寫智能合約并將合約部署到以太坊中創(chuàng)建去中心化應(yīng)用,實現(xiàn)了在沒有可信第三方的情況下進行可追蹤、不可逆轉(zhuǎn)的交易。本研究的智能合約主要針對元數(shù)據(jù)和用戶權(quán)限構(gòu)建,針對輪機日志主要為內(nèi)部使用的特點優(yōu)化了系統(tǒng)的共識機制。
數(shù)據(jù)庫部分系統(tǒng)可以采用關(guān)系型數(shù)據(jù)庫,也可以采用非關(guān)系型數(shù)據(jù)庫,只需要具備日志屬性等結(jié)構(gòu)化數(shù)據(jù)和情況描述等非結(jié)構(gòu)化數(shù)據(jù)的存儲功能即可。從日志數(shù)據(jù)的安全性考慮,建議采用分布式數(shù)據(jù)庫。
2系統(tǒng)功能
電子輪機日志系統(tǒng)的功能主要通過日志服務(wù)模塊體現(xiàn),包括日志填寫、日志自動采集、日志提交、日志查詢和日志核查等。在系統(tǒng)功能實現(xiàn)過程中,需要區(qū)塊鏈平臺和數(shù)據(jù)庫提供支撐。
2.1日志填寫
日志填寫功能主要用于記錄船舶輪機相關(guān)的各類事件及臺賬,這部分內(nèi)容多為非結(jié)構(gòu)化數(shù)據(jù),系統(tǒng)無法自動獲取,需要記錄用戶按照實際情況填寫。填寫內(nèi)容具體包括:船長、輪機長的命令,值班駕駛員的通知;船舶的重要活動;檢修工作記錄; 燃油、潤滑油加裝、調(diào)駁的時間、地點、品種及數(shù)量; 船舶防污染設(shè)備的使用情況,污油水的排放時間、地點;機電設(shè)備發(fā)生故障的原因及其處理經(jīng)過;船舶應(yīng)急設(shè)備的檢查、試驗情況;船舶固定消防系統(tǒng)的檢查、試驗情況;船舶重要設(shè)備的檢修及進行明火作業(yè)的部位、審批情況;船舶重要設(shè)備的更換情況及主要技術(shù)數(shù)據(jù);船舶交通事故、機損事故發(fā)生的時間、地點、主要經(jīng)過及其處理情況;輪機部人員的重大人事變動等。系統(tǒng)將以上內(nèi)容按照輪機日志的格式要求,分門別類列出供記錄人員填寫。
2.2日志自動采集
日志自動采集功能用于采集船舶航行和機艙設(shè)備運行情況的結(jié)構(gòu)化數(shù)據(jù),本功能無需用戶操作。系統(tǒng)可以通過部署于船舶端的各類感知設(shè)備中獲取數(shù)據(jù),完成該部分日志數(shù)據(jù)的自動采集??梢宰詣硬杉臄?shù)據(jù)包括:主機啟動、主機停止的時間,主機正常運行時的轉(zhuǎn)速;船舶靠離碼頭、進出港區(qū)、航行于危險航區(qū)及進行編解隊作業(yè)的時間、地點和車鐘令;柴油發(fā)電機組、輔助鍋爐及機電設(shè)備的啟用時間和停止時間;駁油量、駁水量,燃油艙轉(zhuǎn)換量及輕重燃油轉(zhuǎn)換的時間;機電設(shè)備發(fā)生故障及恢復(fù)正常的時間;燃油、潤滑油消耗量、庫存量等。自動采集只需要管理人員針對當(dāng)前船舶進行系統(tǒng)配置即可,一旦配置完成,系統(tǒng)即可根據(jù)約定的采集頻率和協(xié)議進行連續(xù)自動的數(shù)據(jù)采集,無需用戶操作。自動采集的數(shù)據(jù)類型多樣,多數(shù)情況下并不能符合輪機日志的格式要求,需要進一步的數(shù)據(jù)轉(zhuǎn)換和處理。
2.3日志提交
日志提交功能用于完成日志的數(shù)據(jù)采集和填寫后,定期自動將日志數(shù)據(jù)提交至后臺存儲,本功能無需用戶操作。輪機日志的提交涉及日志數(shù)據(jù)的保存和日志元數(shù)據(jù)的上鏈,具體過程包括數(shù)據(jù)處理、日志保存、數(shù)字摘要生成和元數(shù)據(jù)上鏈等。
(1)數(shù)據(jù)處理。自動采集的數(shù)據(jù),需要按照輪機日志的格式要求進行處理。在符合輪機日志格式要求后,將自動采集數(shù)據(jù)和人工填寫的數(shù)據(jù)按照約定的時間段(一般是自然日)組合,形成原始輪機日志數(shù)據(jù)。根據(jù)需要,原始的輪機日志數(shù)據(jù)可以采用對稱加密的方式,生成輪機日志密文存儲。
(2)日志保存。系統(tǒng)調(diào)用數(shù)據(jù)庫的相關(guān)接口,將原始輪機日志數(shù)據(jù)上傳至數(shù)據(jù)庫進行保存,獲取數(shù)據(jù)的存儲路徑。
(3)數(shù)字摘要生成。哈希算法是計算機領(lǐng)域中非?;A(chǔ)且重要的算法,它可以將任意長度的二進制數(shù)據(jù)映射成較短的二進制串(哈希值),且不同的二進制數(shù)據(jù)映射的結(jié)果極大的概率下是不同的。本研究中利用SHA256的算法獲取原始輪機日志數(shù)據(jù)的哈希值,稱為輪機日志的數(shù)字摘要。利用哈希函數(shù)抗碰撞的特點,數(shù)字摘要可以用來判斷輪機日志內(nèi)容是否被篡改,對數(shù)據(jù)完整性進行校驗。但是,若數(shù)字摘要值被篡改則數(shù)據(jù)完整性的驗證失去了意義。因此,數(shù)字摘要需要被保存到區(qū)塊鏈中以保證安全性。
(4)元數(shù)據(jù)上鏈。數(shù)據(jù)的存儲路徑對應(yīng)輪機日志的存儲內(nèi)容,數(shù)字摘要則可以保證存儲的輪機日志未被篡改,本研究將存儲路徑和數(shù)字摘要統(tǒng)稱為元數(shù)據(jù),下一步就需要將元數(shù)據(jù)保存在區(qū)塊鏈上,這就涉及到區(qū)塊鏈平臺的機制。系統(tǒng)將采用拜占庭共識機制作為區(qū)塊鏈平臺的共識機制,元數(shù)據(jù)產(chǎn)生后當(dāng)前節(jié)點作為輸入端啟動交易,按照智能合約,交易將被發(fā)送給當(dāng)前視圖的主節(jié)點,主節(jié)點負(fù)責(zé)分發(fā)元數(shù)據(jù)到在線節(jié)點進行運算,當(dāng)運算結(jié)果達到算法要求的一致性時即產(chǎn)生新的區(qū)塊并加入?yún)^(qū)塊鏈,完成元數(shù)據(jù)的上鏈操作。
2.4日志查詢
日志查詢功能用于查詢指定條件的輪機日志,并按照指定格式進行展示,本功能主要面向查詢用戶。輪機日志數(shù)據(jù)存儲在數(shù)據(jù)庫中,數(shù)據(jù)存儲路徑作為元數(shù)據(jù)的一部分存儲在區(qū)塊鏈中,因此若想訪問日志數(shù)據(jù),需要首先進入?yún)^(qū)塊鏈平臺,調(diào)用智能合約獲取數(shù)據(jù)存儲路徑。系統(tǒng)可以設(shè)置允許其他哪些節(jié)點訪問本節(jié)點寫入的輪機日志,設(shè)置完畢后,當(dāng)某節(jié)點發(fā)起日志查詢交易時,合約函數(shù)會對調(diào)用者身份進行判斷。通過交易的簽名可以得到發(fā)起者的真實身份,沒有私鑰的情況下無法偽冒身份。具體的日志查詢流程包括:
(1)查詢?nèi)藛T調(diào)用日志查詢功能,系統(tǒng)根據(jù)查詢條件構(gòu)造數(shù)據(jù)訪問交易提交至區(qū)塊鏈平臺,并使用私鑰對交易簽名。
(2)區(qū)塊鏈節(jié)點先驗證交易簽名,簽名在許可范圍內(nèi)則啟動上鏈機制,將數(shù)據(jù)訪問的時間和以太坊賬號打包并廣播到全網(wǎng),在區(qū)塊鏈網(wǎng)絡(luò)對交易達成共識后,形成查詢交易區(qū)塊上鏈,供數(shù)據(jù)所有者對訪問記錄溯源。
(3)系統(tǒng)獲取元數(shù)據(jù),根據(jù)數(shù)據(jù)存儲路徑從數(shù)據(jù)庫中獲取對應(yīng)的輪機日志數(shù)據(jù),與元數(shù)據(jù)中的數(shù)字摘要進行核對運算驗證數(shù)據(jù)完整性,最后返回給客戶端。
(4)如果在提交時有對稱加密操作,則用戶使用對稱加密密鑰解密獲得的密文數(shù)據(jù),得到明文。
2.5日志核查
日志核查功能是定時或在事故發(fā)生時對全部或者部分輪機日志進行核查追溯,查看日志數(shù)據(jù)是否被篡改、日志寫入查詢等操作記錄等,主要面向機務(wù)主管部門的管理用戶。日志核查的范圍主要包括:
(1)元數(shù)據(jù)有效性核查。定時在元數(shù)據(jù)區(qū)塊鏈上驗證指定區(qū)塊區(qū)間的相鄰區(qū)塊 Hash 值是否吻合。即檢查當(dāng)前區(qū)塊的 pre-hash 字段值是否為上一區(qū)塊的頭的 hash 值,以及當(dāng)前區(qū)塊頭的 Datahash 是否為本區(qū)塊所有交易的 hash 值等。
(2)數(shù)據(jù)庫數(shù)據(jù)有效性核查。定時追溯區(qū)塊鏈中的元數(shù)據(jù)區(qū)塊,提取元數(shù)據(jù)區(qū)塊中數(shù)據(jù)存儲路徑對應(yīng)的數(shù)據(jù)庫數(shù)據(jù),計算每條輪機日志數(shù)據(jù)的數(shù)字摘要,與元數(shù)據(jù)中存儲的數(shù)字摘要進行比對,核查數(shù)值是否吻合。
(3)用戶訪問記錄核查。核查全部或者指定的用戶訪問記錄,查看用戶的訪問時間及賬號,檢查是否符合相關(guān)審核程序與授權(quán)許可。
(4)特定船舶輪機日志核查。對特定船舶提取符合查詢條件的電子輪機日志記錄,形成該船舶完整的輪機日志報告,作為相關(guān)事件處理的電子依據(jù)。
3結(jié)論
電子輪機日志系統(tǒng)可以定時定點連續(xù)性地自動提取輪機日志的各項狀態(tài)和數(shù)據(jù),并且自動保存并上傳。系統(tǒng)采用了基于區(qū)塊鏈技術(shù)的分布式存儲,并且可以通過數(shù)據(jù)同步機制自動恢復(fù),避免了傳統(tǒng)數(shù)據(jù)存儲模式下的單點故障風(fēng)險,保證了系統(tǒng)的可靠性。系統(tǒng)利用區(qū)塊鏈技術(shù)實現(xiàn)了管理范圍內(nèi)全部船舶的分布式透明記賬功能,采用數(shù)字簽名的過程保證了信息傳輸?shù)陌踩?,防止了對?shù)據(jù)傳輸內(nèi)容的篡改行為。系統(tǒng)的研究有助于提升船舶輪機日志的完整性和可靠性,對于降低輪機工作強度和提升輪機工作效率具有重要意義。
參考文獻:
[1] Nakamoto S. Bitcoin: A Peer-to-peer Electronic Cash System [EB/OL].https://bitcoin.org/bitcoin.pdf, 2008-10-31.
[2] King S, Nadal S. PPCoin: Peer-to-Peer Crypto-Currency with Proof-of-Stake[EB/OL]. https://www.kryptographe.com/peer-peer-crypto-cuiTency-proof-stake, 2012-08-19.
[3] drdobbs. The Byzantine Generals problem[J]. Acm Transactions on Programming Languages & Systems, 1982, 4(3):382-401.
[4] Castro M, Liskov B. Practical Byzantine fault to!erance[C]//Symposium on Operating Systems Design and Implementation. USENIX Association, 1999:173—186.
[5] 熊志強,周吳.基于區(qū)塊鏈技術(shù)的電子病歷研究[j]. 中國數(shù)字醫(yī)學(xué),2019(01).