李 強,彭 勇
(中國人民解放軍66350 部隊,河北保定 071000)
飛機是一個復(fù)雜的系統(tǒng),成千上萬個零部件協(xié)同工作才能確保飛行安全。隨著現(xiàn)代化程度越來越高,分工越來越細,各個部門的協(xié)作越來越廣泛。鑒于當前飛機每飛行1 h 都會生成大量數(shù)據(jù)的情況,確保如此復(fù)雜系統(tǒng)的維修過程質(zhì)量是一項挑戰(zhàn)。為了滿足當前的質(zhì)量要求,有必要利用新技術(shù)改進航空維修記錄的存儲方式。真正的革命不是計算機系統(tǒng)的擴展,而是存儲、使用和分析數(shù)據(jù)的方式。在航空工業(yè)中,更好的維修記錄數(shù)據(jù)不僅有助于商業(yè)決策,而且有助于提高安全性。只有在發(fā)布證明維修工作已完成的文件后,飛機才被視為適航。目前,這些文件以實物形式保存,存在記錄錯誤、證據(jù)搜集困難和缺乏透明度等問題。通過全面準確地了解整個維護過程及其對航空法規(guī)和維修規(guī)程的執(zhí)行情況,可以采取針對性措施減少計劃外停機時間。
區(qū)塊鏈是一種前沿技術(shù),在未來一段時間內(nèi)可能會顛覆許多行業(yè)的商業(yè)運作模式,也會對航空業(yè)產(chǎn)生重大影響。維護過程涉及到諸如基層維護、部件供應(yīng)商或?qū)I(yè)第三方等各方。準確的維護記錄對于飛機的適航性至關(guān)重要,可以通過使用分散的數(shù)據(jù)庫(如區(qū)塊鏈)來實現(xiàn)。本文在航空維修數(shù)據(jù)存儲領(lǐng)域引入?yún)^(qū)塊鏈技術(shù),為確保飛行安全提供一種切實可行的實用解決方案。
區(qū)塊鏈技術(shù)最初是為加密貨幣交易開發(fā)的,但其應(yīng)用遠不止于此。區(qū)塊鏈是私人或公共網(wǎng)絡(luò)成員之間的分布式數(shù)據(jù)庫。沒有一個中央機構(gòu)負責數(shù)據(jù)存儲管理。任何數(shù)據(jù)交易都是基于先前所有參與者都接受的共識協(xié)議進行的。它產(chǎn)生了一個由無數(shù)相互連接的區(qū)塊組成的安全數(shù)字賬本。每個數(shù)據(jù)塊通過加密哈希與前一個數(shù)據(jù)塊連接,形成可靠的按時間順序排列的記錄鏈,如圖1 所示。每個塊存儲前一個塊的散列,確保任意兩個連續(xù)塊之間的連接。結(jié)果數(shù)據(jù)庫是不可修改的,這意味著它不能被逆轉(zhuǎn)或篡改[1]。
圖1 區(qū)塊之間的連接
共識協(xié)議的核心是一種算法,它確保每個交換的數(shù)據(jù)都經(jīng)過所有成員的驗證。區(qū)塊鏈是通過創(chuàng)建具有多層安全性的準確且分散的分類賬來建立信任。每個區(qū)塊的數(shù)字簽名是區(qū)塊鏈最重要的特征之一,其中包括使用加密哈希。哈希就像數(shù)字文檔的指紋。區(qū)塊鏈技術(shù)使用安全哈希算法,最常見的算法就是SHA256,它可以生成唯一的單向哈希,非常有用。這意味著不可能逆轉(zhuǎn)加密過程并返回原始文檔。此外,SHA256 滿足雪崩效應(yīng)屬性,即如果需要加密的文件中只有一位發(fā)生更改,算法將觸發(fā)一系列更改,新生成的哈希將與未更改文檔的哈希完全不同。使區(qū)塊鏈技術(shù)強大的另一個安全層是“工作證明”概念[2]。只有在解決了計算難題后,才能向鏈中添加新的區(qū)塊。此外,還需執(zhí)行區(qū)塊鏈有效性檢查來驗證添加的區(qū)塊的正確性。
研究探索一項新技術(shù)給經(jīng)濟社會發(fā)展帶來的巨大效益,對于人們接受新技術(shù)是至關(guān)重要的。航空維修記錄中使用區(qū)塊鏈技術(shù)具有如下主要優(yōu)勢[3]。
航空維修記錄在飛機的整個壽命周期中都很有價值。未來的維護任務(wù)是基于飛機歷史數(shù)據(jù)來組織的。過去記錄中的錯誤將導(dǎo)致未來更多的錯誤,就像雪崩一樣。錯誤的維護記錄會對飛機履歷文件的完整性產(chǎn)生負面影響。區(qū)塊鏈提供了一個安全的賬本,其中包含的數(shù)據(jù)不會被可擴展的硬件設(shè)施所破壞。
飛機維護記錄很復(fù)雜,涉及許多紙質(zhì)文件和電子文件,存儲在不同的位置。有了區(qū)塊鏈技術(shù),工程師、技術(shù)人員和管理人員可以在幾秒內(nèi)輕松訪問公共或私人數(shù)據(jù)庫中的信息。
跟蹤飛機運行和維護活動的進程是一項具有挑戰(zhàn)性的任務(wù)。在區(qū)塊鏈中記錄飛機數(shù)據(jù)將為參與者創(chuàng)造一個數(shù)字環(huán)境,將非結(jié)構(gòu)化、復(fù)雜的數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化、易于理解的信息。在進行調(diào)查或?qū)徲嫊r,很容易提取相關(guān)和準確的信息。
分散的航空網(wǎng)絡(luò)將由各方組成,包括航空管理局和其他確保飛機正常運行的所有業(yè)務(wù)參與者。共享飛機記錄將增加維護和運營的透明度。這將迫使參與者改進自身的活動,千方百計提供高質(zhì)量的服務(wù),進而帶來更安全的飛行和獲得更多的客戶。在網(wǎng)絡(luò)上共享數(shù)據(jù)是建立信任的關(guān)鍵因素,根據(jù)共識協(xié)議對敏感信息進行保護,每個成員根據(jù)自己的角色只能獲得特定的信息。
區(qū)塊鏈系統(tǒng)最重要的特征之一是不可變屬性。一旦添加了有效的信息區(qū)塊,就不能對其進行更改。準確的數(shù)據(jù)庫要有結(jié)構(gòu)化、精確的、按時間順序排列的和完整的數(shù)據(jù),以便能夠開展不同類型的分析。區(qū)塊鏈技術(shù)可以在這一方面發(fā)揮重要作用。
無論從短期還是長遠來看,提高企業(yè)的效益和獲得客戶的信任都是行之有效的業(yè)務(wù)策略。在航空領(lǐng)域,區(qū)塊鏈技術(shù)可以擴大許多業(yè)務(wù)的規(guī)模,并將整個行業(yè)提升到一個新的水平。飛行記錄、維護任務(wù)、部件更換歷史記錄、故障、維修服務(wù)通報、適航指令等可以存儲在公共或私人區(qū)塊鏈中[4-6]。
對于航空業(yè)參與者而言,共享數(shù)據(jù)是互利共贏的。共享數(shù)據(jù)可以提高網(wǎng)絡(luò)信息的價值,也可獲得有價值信息數(shù)據(jù)。在航空業(yè)部署分散系統(tǒng)可能有以下參與者:制造商(Original Equipment Manufacturer,OEM)、航空公司、維護、維修和大修(Maintenance Repair and Overhaul,MRO)或?qū)I(yè)第三方、航空管理局(Civil Aviation Authority,CAA)、零件供應(yīng)商。所有這些成員都可以相互交互(表1)。
表1 參與者之間的互動
因為“智能合約”存儲在區(qū)塊中,區(qū)塊鏈中所有語言腳本都是可執(zhí)行的。這些數(shù)字合同就像是負責處理操作/數(shù)據(jù)事務(wù)的可信第三方。但是,它不是參與第三方,而是分布在網(wǎng)絡(luò)中的一段代碼,可以自動執(zhí)行某些任務(wù)。這些程序不是人為控制的,而是由網(wǎng)絡(luò)中所有成員事先擬定智能合約中的條款和條件。
考慮區(qū)塊鏈網(wǎng)絡(luò)中智能合約應(yīng)用的示例:某個型號的飛機必須每飛行200 h 必須進行某一項目的維護檢查。飛行和維護記錄都存儲在區(qū)塊鏈中。如果及時進行維護檢查,飛機狀態(tài)將保持“完好可飛”,否則其狀態(tài)將變?yōu)椤暗孛娑ㄆ诰S護”。自動執(zhí)行的邏輯操作將被編碼在智能合約中,任何人都無法更改。這項措施將防止飛機在維修任務(wù)期間執(zhí)行飛行任務(wù)。
選擇區(qū)塊鏈解決方案似乎增加了成本,但對航空公司、制造商以及乘客來說都是益處頗多。鑒于空中新飛機的數(shù)量呈指數(shù)級增長,獲得客戶的信任是航空公司一個持續(xù)的目標。使用區(qū)塊鏈技術(shù)方案的公司將更好地跟蹤其流程,改進其活動,并為其客戶提供更可靠的服務(wù)。因此,安全事故的數(shù)量將減少,而收入將大幅增長。
創(chuàng)建區(qū)塊鏈應(yīng)用程序的方法包括以下步驟:
(1)第一步是使用Spyder 軟件(可通過Anaconda 平臺獲得)設(shè)置Python 開發(fā)環(huán)境。
(2)第二步是組織文件結(jié)構(gòu),包括:①3 個python 文件,每個節(jié)點對應(yīng)一個腳本,對應(yīng)于網(wǎng)絡(luò)中涉及的各方。每個腳本僅通過運行應(yīng)用程序的端口不同于其他腳本;②包含節(jié)點地址列表的json 文件;③1 個json 文件,包含5 個關(guān)鍵元素(“FlightHours”“Landings”“AircraftEfficiencyStatus”“StartMaintenanceTask”“End-MaintenanceTask”),每次在區(qū)塊鏈中記錄飛機事件時都需要這些元素。當前軟件是為2 個飛機事件開發(fā)的:①飛行事件,指飛機剛剛完成一次飛行,其壽命周期的一些相關(guān)信息可添加到區(qū)塊鏈中;②維修事件,指飛機剛剛開始或結(jié)束維修任務(wù)。
(3)第三步是開發(fā)具有以下結(jié)構(gòu)的主腳本:①導(dǎo)入必要的庫;②構(gòu)建區(qū)塊鏈類;③創(chuàng)建web 應(yīng)用程序;④分散區(qū)塊鏈;⑤運行應(yīng)用程序和結(jié)果。
在基于面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP)概念創(chuàng)建計算機程序的過程中構(gòu)建區(qū)塊鏈類。為了定義執(zhí)行區(qū)塊鏈類時應(yīng)該發(fā)生什么,重寫了構(gòu)造函數(shù)來初始化對象的狀態(tài)。因此,注冊了若干實例的屬性,如未來塊的空列表、未來飛機事件的空列表和網(wǎng)絡(luò)節(jié)點的空列表。此外,在構(gòu)造函數(shù)中稱為“create_block”函數(shù),負責創(chuàng)建創(chuàng)世紀塊。
構(gòu)造函數(shù)中調(diào)用的“create_block”函數(shù)定義如下:該函數(shù)有兩個參數(shù):nonce,這是一個先前通過解決加密難題確定的數(shù)字,以及前一個塊的哈希值。該函數(shù)獲取所有信息:當前索引、前一塊的哈希、預(yù)定的nonce 和飛機事件列表,將它們轉(zhuǎn)換并連接成一個字符串,在“Haslib”庫中的SHA256 加密哈希函數(shù)的幫助下對其進行編碼并將其轉(zhuǎn)換為唯一的十六進制哈希,這樣就創(chuàng)建了每個塊的哈希值(圖2)。
圖2 創(chuàng)建塊進程
區(qū)塊應(yīng)當按照以下格式返回(圖3)。區(qū)塊鏈中的主要安全層之一是通過將前一塊的哈希存儲在當前塊中,從而提供任意2 個連續(xù)塊之間的連接。
圖3 區(qū)塊的格式
如上所述,區(qū)塊鏈系統(tǒng)包括所謂的“工作證明”以防止攻擊,它包括解決計算難題。這個過程也被稱為“挖礦”。
在開發(fā)的區(qū)塊鏈中,工作證明函數(shù)將前一個區(qū)塊作為參數(shù)。然后,在“while”循環(huán)中,nonce 與索引、前一個塊的哈希和飛機事件列表放在一起,并生成十六進制哈希,就像在“create_block”函數(shù)中一樣。為了驗證nonce,得到的十六進制哈希必須以3 個0 開始。否則,迭代將繼續(xù),nonce 將遞增,直到滿足條件為止。目標是在多次迭代后找出正確的“nonce”,它將對應(yīng)于一個前3 位為0 的哈希值。此外,還定義了一個“is_chain_valid”函數(shù),以便在鏈中循環(huán)并驗證當前塊的上一個哈希值是否等于上一個塊的哈希值。除此驗證外,該函數(shù)還將檢查每個塊的哈希值,以確保它以3 個0 開始,作為區(qū)塊鏈一致性協(xié)議的一部分。
區(qū)塊鏈類中的另一個重要方法是“add_aircraftEvent”函數(shù),該函數(shù)包含5 個參數(shù):“FlightHours”“Landings”“AircraftEfficiencyStatus”“StartMaintenanceTask”“EndMaintenanceTask”(圖4)。此函數(shù)旨在收集用戶輸入,處理并將其附加到AircraftEvents 列表中,然后一起添加到未來塊中。
圖4 飛機事件列表格式
一方面,目的是在跟蹤飛機壽命的過程中獲得兩個最相關(guān)的參數(shù):飛行小時數(shù)和起落次數(shù)。顯然,在實際產(chǎn)品區(qū)塊鏈應(yīng)用中應(yīng)收集更多參數(shù),以便更好地跟蹤飛機使用情況。另一方面,飛機的壽命也受到維修方式的影響。在航空工業(yè)中,準確的時間線維修記錄是至關(guān)重要的。為此,又收集了2 個參數(shù)。當用戶開始維修操作時,將使用“StartMaintenanceTask”字段添加到飛機事件列表中。類似的,結(jié)束維護操作時,將通過“EndMaintenanceTask”字段創(chuàng)建一個新事件來完成維修記錄。第五個參數(shù)表示飛機狀態(tài)(有效/無效)。
區(qū)塊鏈類開發(fā)的下一個核心是包含共識算法,這是一種可確保所有節(jié)點在任何時候都包含相同鏈的算法。每當添加新塊時,分散網(wǎng)絡(luò)中的所有其他節(jié)點都將使用相同的鏈進行更新。這是區(qū)塊鏈應(yīng)用的基本原則之一。共識函數(shù)將在分散網(wǎng)絡(luò)中的所有節(jié)點之間循環(huán),檢查每條鏈,找出最長的鏈,并在包含比最長鏈短的鏈的任何節(jié)點中,用最長的鏈替換該鏈。
在航空領(lǐng)域,數(shù)據(jù)量呈指數(shù)級增長,細節(jié)可以決定飛行的安全。區(qū)塊鏈技術(shù)是航空業(yè)的解決方案,將徹底改變確保資產(chǎn)可追溯性的方式。航空業(yè)引入?yún)^(qū)塊鏈技術(shù),不僅可以提高安全性,也是建立一種新的商業(yè)模式的嘗試,讓航空公司獲得客戶更多的信任同時也增強透明度。因此,傳統(tǒng)的數(shù)據(jù)管理方法不再是航空業(yè)的最優(yōu)選擇。本文介紹了一種利用區(qū)塊鏈技術(shù)存儲和管理航空維修記錄的新方法。分析了區(qū)塊鏈技術(shù)對可能涉及的組織的影響。作為概念證明,搭建使用Python 編程語言開發(fā)區(qū)塊鏈的架構(gòu),以展示區(qū)塊鏈功能及其在航空行業(yè)的實用性。