李天翼
(中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081)
隨著科技水平的快速發(fā)展和高速鐵路規(guī)模的不斷擴(kuò)大,旅客的出行目的、出行方式和服務(wù)需求呈現(xiàn)出多樣化趨勢(shì),傳統(tǒng)的銷售渠道和客運(yùn)產(chǎn)品已不能滿足旅客對(duì)鐵路出行服務(wù)的要求。鐵路需要加強(qiáng)與路內(nèi)外優(yōu)質(zhì)企業(yè)的協(xié)作互補(bǔ),推進(jìn)一站式的出行服務(wù)[1],提高出行服務(wù)的供給質(zhì)量。區(qū)塊鏈?zhǔn)且环N去中心化的分布式賬本技術(shù)[2],近年來(lái)在金融領(lǐng)域和實(shí)體經(jīng)濟(jì)領(lǐng)域得到廣泛應(yīng)用,其中聯(lián)盟鏈?zhǔn)菣C(jī)構(gòu)與機(jī)構(gòu)之間的區(qū)塊鏈網(wǎng)絡(luò),擁有更高的應(yīng)用可擴(kuò)展性。在鐵路客運(yùn)出行服務(wù)系統(tǒng)中引入聯(lián)盟鏈技術(shù),有利于建立一個(gè)多方參與、公平可信的交易平臺(tái),形成更加成熟、層次分明的鐵路出行產(chǎn)業(yè)鏈,推動(dòng)鐵路客運(yùn)出行服務(wù)的進(jìn)一步發(fā)展。
近年來(lái),中國(guó)國(guó)家鐵路集團(tuán)有限公司運(yùn)用信息化手段與航空、金融、汽車等路內(nèi)外企業(yè)實(shí)現(xiàn)對(duì)接,在12306 上推出相應(yīng)客運(yùn)出行服務(wù),涉及車站服務(wù)、車上服務(wù)、到達(dá)服務(wù)等定制化服務(wù)。旅客登陸12306 網(wǎng)站購(gòu)票,可以隨票選擇鐵路乘意險(xiǎn);購(gòu)票成功后,系統(tǒng)根據(jù)乘車信息向旅客推薦送站接車、車上餐飲、酒店住宿等服務(wù);同時(shí),旅客可以在12306 網(wǎng)站上直接選擇機(jī)票銷售、酒店住宿、個(gè)人旅游、餐飲特產(chǎn)、商城購(gòu)物等一系列服務(wù)。既有鐵路客運(yùn)出行服務(wù)系統(tǒng)邏輯架構(gòu)圖如圖1所示。
圖1 既有鐵路客運(yùn)出行服務(wù)系統(tǒng)邏輯架構(gòu)圖Fig.1 Logical structure of existing railway passenger travel service system
既有鐵路客運(yùn)出行服務(wù)系統(tǒng)從架構(gòu)上可以分為4 層,第一層是客運(yùn)服務(wù)層,主要包括12306 WEB、12306 APP、客服語(yǔ)音等服務(wù)渠道;第二層為服務(wù)接入層,實(shí)現(xiàn)各類服務(wù)渠道的接入,包括路內(nèi)系統(tǒng)與路外系統(tǒng)的接入服務(wù);第三層是業(yè)務(wù)邏輯層,是出行服務(wù)中業(yè)務(wù)邏輯的具體實(shí)現(xiàn);第四層為數(shù)據(jù)層,采用關(guān)系數(shù)據(jù)庫(kù)、NoSQL 數(shù)據(jù)庫(kù)、文件系統(tǒng)等多種數(shù)據(jù)存儲(chǔ)方式,保存運(yùn)營(yíng)數(shù)據(jù)、共享數(shù)據(jù)、交易數(shù)據(jù)和營(yíng)銷分析數(shù)據(jù)等。在系統(tǒng)層面,通過(guò)服務(wù)接口、數(shù)據(jù)接口的方式,實(shí)現(xiàn)同路內(nèi)外系統(tǒng)互聯(lián)。但是各系統(tǒng)之間授權(quán)機(jī)制復(fù)雜,數(shù)據(jù)安全難以保障,導(dǎo)致多主體難以實(shí)現(xiàn)互信,從而影響業(yè)務(wù)規(guī)模和用戶體驗(yàn)[3],具體問(wèn)題如下。
(1)數(shù)據(jù)安全風(fēng)險(xiǎn)高。在既有鐵路客運(yùn)出行服務(wù)系統(tǒng)中,業(yè)務(wù)數(shù)據(jù)與用戶數(shù)據(jù)以信息流的方式在各系統(tǒng)間傳輸、處理和存儲(chǔ),存在隱私信息泄露、數(shù)據(jù)被篡改的風(fēng)險(xiǎn),參與交易的企業(yè)需要采用多種技術(shù)手段保證己方的數(shù)據(jù)安全和交易安全。
(2)信息交換流程長(zhǎng)。在空鐵聯(lián)運(yùn)等場(chǎng)景中,鐵路需要獲取民航等其他主體的數(shù)據(jù)才能完成交易,目前采取多級(jí)緩存策略完成數(shù)據(jù)交換,但在售票高峰期可能出現(xiàn)數(shù)據(jù)更新不及時(shí)、不準(zhǔn)確的情況,從而導(dǎo)致旅客交易失敗,用戶體驗(yàn)差。
(3)對(duì)賬環(huán)節(jié)低效。在出行服務(wù)系統(tǒng)中,各交易企業(yè)都是獨(dú)立記錄各自的交易數(shù)據(jù),企業(yè)之間對(duì)賬時(shí),往往需要交換數(shù)據(jù)進(jìn)行比對(duì),企業(yè)間數(shù)據(jù)的差異易引起對(duì)賬爭(zhēng)議,通常需要人工介入或第三方協(xié)調(diào),增加了交易企業(yè)的結(jié)算時(shí)間和人力成本。
目前,既有鐵路客運(yùn)出行服務(wù)系統(tǒng)中的問(wèn)題已制約鐵路客運(yùn)出行服務(wù)的系統(tǒng)規(guī)模和服務(wù)水平,亟需引入新技術(shù)構(gòu)建全新的鐵路客運(yùn)出行服務(wù)系統(tǒng)。
區(qū)塊鏈技術(shù)起源于比特幣[4],可在沒(méi)有信任基礎(chǔ)的個(gè)體之間就交易的合法性等達(dá)成共識(shí),保證交易數(shù)據(jù)的真實(shí)性、安全性、不可篡改、可溯源、多方共享,按參與方式可以分為公有鏈、私有鏈、聯(lián)盟鏈[5]。其中聯(lián)盟鏈?zhǔn)怯邢揲_(kāi)放的網(wǎng)絡(luò),它限定了聯(lián)盟成員的范圍,新成員在加入聯(lián)盟鏈時(shí),需要經(jīng)過(guò)聯(lián)盟成員投票決定是否同意加入,具有節(jié)點(diǎn)可控、性能高、可能提供更好的隱私保護(hù)等優(yōu)勢(shì),目前企業(yè)中應(yīng)用最廣的為Fabric 聯(lián)盟鏈,其采用模塊化的架構(gòu)設(shè)計(jì),支持可插拔組件的開(kāi)發(fā)與使用。
結(jié)合既有鐵路客運(yùn)出行服務(wù)系統(tǒng)存在的問(wèn)題,基于聯(lián)盟鏈的特點(diǎn)與優(yōu)勢(shì),設(shè)計(jì)基于聯(lián)盟區(qū)塊鏈的鐵路客運(yùn)出行服務(wù)系統(tǒng),系統(tǒng)由各企業(yè)應(yīng)用、聯(lián)盟區(qū)塊鏈、旅客服務(wù)、鏈下數(shù)據(jù)和旅客客戶端等部分協(xié)同完成,基于聯(lián)盟區(qū)塊鏈的鐵路客運(yùn)出行服務(wù)系統(tǒng)架構(gòu)如圖2 所示。
圖2 基于聯(lián)盟區(qū)塊鏈的鐵路客運(yùn)出行服務(wù)系統(tǒng)架構(gòu)Fig.2 Architecture of railway passenger travel service system based on consortium blockchain
基于聯(lián)盟區(qū)塊鏈的鐵路客運(yùn)出行服務(wù)系統(tǒng)架構(gòu)主要包括基礎(chǔ)層、區(qū)塊鏈層、服務(wù)層與應(yīng)用層4部分。
(1)基礎(chǔ)層。基礎(chǔ)層涵蓋公路、鐵路、民航、保險(xiǎn)、銀行等各行業(yè)實(shí)體應(yīng)用基礎(chǔ)設(shè)施,包括云環(huán)境、專有和公有網(wǎng)絡(luò)、終端IOT 設(shè)備、專用設(shè)備等,基礎(chǔ)層為構(gòu)建上層區(qū)塊鏈、服務(wù)平臺(tái)以及應(yīng)用提供堅(jiān)實(shí)的底座。
(2)區(qū)塊鏈層。區(qū)塊鏈層負(fù)責(zé)交易的收集、打包成塊、合法性驗(yàn)證以及將驗(yàn)證通過(guò)的區(qū)塊上鏈,區(qū)塊鏈層包括基礎(chǔ)組件、擴(kuò)展組件2 部分。基礎(chǔ)組件包括能夠適用于客運(yùn)出行服務(wù)不同需求的共識(shí)機(jī)制、用于區(qū)塊鏈節(jié)點(diǎn)之間通信的P2P 網(wǎng)絡(luò)、存儲(chǔ)出行服務(wù)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)組件以及用于智能合約執(zhí)行的智能合約執(zhí)行引擎。擴(kuò)展組件包括用于實(shí)現(xiàn)鏈上交通數(shù)據(jù)隱私安全的隱私保護(hù)組件、網(wǎng)絡(luò)管理組件、適配不同監(jiān)管要求的可信計(jì)算組件、出行服務(wù)應(yīng)用場(chǎng)景中聯(lián)盟鏈成員內(nèi)部自治的聯(lián)盟鏈治理組件與數(shù)據(jù)管理組件。
(3)服務(wù)層。在服務(wù)層中,包括統(tǒng)一的旅客服務(wù)、區(qū)塊鏈管理服務(wù)與數(shù)據(jù)共享服務(wù)。旅客服務(wù)通過(guò)HTTPS/HTTP 協(xié)議向旅客提供售票、保險(xiǎn)、旅游、訂餐等服務(wù)。區(qū)塊鏈管理服務(wù)支持區(qū)塊鏈聯(lián)盟的快速部署、動(dòng)態(tài)擴(kuò)展,并具備高效智能合約管理能力,通過(guò)可視化工具快速生成、部署、發(fā)布智能合約。數(shù)據(jù)共享服務(wù)主要面向企業(yè)提供數(shù)據(jù)發(fā)布與使用功能。
(4)應(yīng)用層。應(yīng)用層為各企業(yè)應(yīng)用和旅客客戶端,各企業(yè)應(yīng)用可以作為權(quán)威節(jié)點(diǎn)參與到客運(yùn)出行服務(wù)聯(lián)盟區(qū)塊鏈中,提供共享數(shù)據(jù)、數(shù)字資產(chǎn)和鏈下交易服務(wù),并享有交易驗(yàn)證、區(qū)塊共識(shí)、數(shù)據(jù)查詢等權(quán)力,主要包括12306 系統(tǒng)、民航系統(tǒng)、公路系統(tǒng)以及酒店、旅游、約車、保險(xiǎn)等行業(yè)系統(tǒng),其均為客運(yùn)出行服務(wù)系統(tǒng)的供應(yīng)商,提供除旅客運(yùn)輸之外的其它商品和服務(wù)。
在基于聯(lián)盟區(qū)塊鏈的鐵路客運(yùn)出行服務(wù)系統(tǒng)中,主要有2 種交易模式:鏈上交易和鏈下交易。鏈上交易是聯(lián)盟中的成員將產(chǎn)品或服務(wù)等商品轉(zhuǎn)化為數(shù)字資產(chǎn)注入到區(qū)塊鏈系統(tǒng)中,由智能合約完成交易并將交易憑證寫入?yún)^(qū)塊鏈中;鏈下交易是聯(lián)盟中的成員將商品信息發(fā)布到區(qū)塊鏈中,旅客服務(wù)調(diào)用企業(yè)生產(chǎn)系統(tǒng)服務(wù)的模式完成交易,并將交易信息寫入?yún)^(qū)塊鏈中。基于聯(lián)盟鏈的鐵路客運(yùn)出行服務(wù)交易流程如圖3 所示。
圖3 基于聯(lián)盟鏈的鐵路客運(yùn)出行服務(wù)交易流程Fig.3 Transaction flow of railway passenger travel service based on consortium blockchain
鐵路客運(yùn)出行服務(wù)業(yè)務(wù)的基礎(chǔ)是票務(wù)交易,旅客在客戶端中購(gòu)買產(chǎn)品時(shí),根據(jù)出行需要選擇運(yùn)輸產(chǎn)品和出行服務(wù),當(dāng)車票以數(shù)字資產(chǎn)的形式保存在區(qū)塊鏈中時(shí),區(qū)塊鏈系統(tǒng)使用智能合約來(lái)執(zhí)行交易并將交易憑證寫入?yún)^(qū)塊鏈中,同時(shí)系統(tǒng)主動(dòng)將交易信息通知鐵路票務(wù)系統(tǒng)。當(dāng)車票需要在鏈下交易時(shí),區(qū)塊鏈系統(tǒng)采用業(yè)務(wù)執(zhí)行和共識(shí)分離的策略,旅客服務(wù)調(diào)用票務(wù)系統(tǒng)的接口完成交易,交易成功后將交易信息寫入?yún)^(qū)塊鏈中。旅客購(gòu)票成功后,可以在票務(wù)系統(tǒng)中使用,當(dāng)席位在區(qū)塊鏈系統(tǒng)中售出后,票務(wù)系統(tǒng)通過(guò)內(nèi)部加密信息判斷席位信息的合法性,以方便旅客的電子客票在票務(wù)系統(tǒng)中進(jìn)站、乘車、改簽、退票時(shí)進(jìn)行鑒別。
基于聯(lián)盟鏈的鐵路客運(yùn)出行服務(wù)系統(tǒng)根據(jù)業(yè)務(wù)流程需解決數(shù)據(jù)安全、數(shù)據(jù)共享、數(shù)據(jù)存儲(chǔ)、清分結(jié)算4 個(gè)環(huán)節(jié)的關(guān)鍵技術(shù)。
數(shù)據(jù)安全是鐵路客運(yùn)出行服務(wù)系統(tǒng)的關(guān)鍵環(huán)節(jié),而隨著數(shù)據(jù)交換、共享力度的加大,其權(quán)屬、合規(guī)性、安全性等諸多風(fēng)險(xiǎn)開(kāi)始顯現(xiàn),數(shù)據(jù)擁有方無(wú)法順利地進(jìn)行數(shù)據(jù)共享[6]。針對(duì)上述情況,鐵路客運(yùn)出行服務(wù)系統(tǒng)設(shè)計(jì)多鏈?zhǔn)絽^(qū)塊鏈方案,每個(gè)鏈由不同的節(jié)點(diǎn)組成,各節(jié)點(diǎn)維護(hù)著相同的數(shù)據(jù),不同鏈的數(shù)據(jù)是相互隔離的,以實(shí)現(xiàn)數(shù)據(jù)的隱私保護(hù)。鐵路客運(yùn)出行服務(wù)系統(tǒng)多鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)圖如圖4 所示,系統(tǒng)多鏈?zhǔn)綌?shù)據(jù)由賬戶信息鏈、交易信息鏈、數(shù)字資產(chǎn)鏈組成。
圖4 鐵路客運(yùn)出行服務(wù)系統(tǒng)多鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)圖Fig.4 Multi-chain data structure of railway passenger travel service system
賬戶信息鏈負(fù)責(zé)創(chuàng)建、驗(yàn)證、保存和查詢賬戶信息,包含旅客賬戶信息、企業(yè)賬戶信息與賬戶合約。系統(tǒng)采用實(shí)名制注冊(cè)方式,旅客注冊(cè)時(shí)要求提供相關(guān)信息,包括姓名、證件類型、證件號(hào)碼、手機(jī)號(hào)碼等;企業(yè)賬戶采用聯(lián)盟邀請(qǐng)機(jī)制,注冊(cè)時(shí)提供企業(yè)相關(guān)信息。數(shù)字證書(shū)認(rèn)證中心(CA)對(duì)賬戶信息審核通過(guò)后,為賬戶頒發(fā)數(shù)字證書(shū),生成用戶的私鑰和公鑰[7],然后在出行服務(wù)區(qū)塊鏈中對(duì)用戶信息達(dá)成共識(shí)后,用戶信息被寫入賬戶信息鏈中,其中,用戶隱私信息采用哈希算法和對(duì)稱加密技術(shù)進(jìn)行加密處理。
交易信息鏈?zhǔn)浅鲂蟹?wù)區(qū)塊鏈中的主鏈,該鏈中存儲(chǔ)了旅客出行服務(wù)系統(tǒng)中的交易憑證和交易合約。交易信息鏈中記錄完整的交易信息,包括賬戶信息、數(shù)字資產(chǎn)信息和交易相關(guān)信息。交易信息區(qū)塊鏈保證交易數(shù)據(jù)的真實(shí)性、可追溯性、不可抵賴性、可訪問(wèn)性和可擴(kuò)展性。
數(shù)字資產(chǎn)信息鏈主要存儲(chǔ)鐵路客運(yùn)出行服務(wù)系統(tǒng)的數(shù)字資產(chǎn)信息,包括商品基本信息、商品屬性信息和商品擴(kuò)展信息等,商品基本信息包括商品的標(biāo)識(shí)(散列值)、類別、名稱、所有者、創(chuàng)建時(shí)間、有效時(shí)間等,商品屬性信息包括交易范圍、商品價(jià)格、服務(wù)方式、支付方式、快遞方式、商品數(shù)量等,商品擴(kuò)展信息指商品的特有信息,如車票的發(fā)到站、席別、票種、車廂、席位號(hào)等。其中,企業(yè)可以根據(jù)需要推出聯(lián)合產(chǎn)品,在運(yùn)輸領(lǐng)域,除了機(jī)票、火車票、客車票、船票等單程票,還可以推出往返票、空鐵聯(lián)運(yùn)、鐵水聯(lián)運(yùn)等多種運(yùn)輸產(chǎn)品。
鐵路客運(yùn)出行服務(wù)系統(tǒng)涉及眾多的路內(nèi)外信息系統(tǒng),各機(jī)構(gòu)數(shù)據(jù)標(biāo)準(zhǔn)不統(tǒng)一,阻礙數(shù)據(jù)交換以及共享效率的提升。針對(duì)以上問(wèn)題,以可編程網(wǎng)絡(luò)技術(shù)切入,基于聯(lián)盟鏈設(shè)計(jì)分布式數(shù)據(jù)共享流程,數(shù)據(jù)共享模型如圖5 所示,輔之以數(shù)據(jù)共享智能合約,可實(shí)現(xiàn)對(duì)接入數(shù)據(jù)統(tǒng)一標(biāo)識(shí),獲得持續(xù)、多源、標(biāo)準(zhǔn)化的數(shù)據(jù)資源。
圖5 數(shù)據(jù)共享模型Fig.5 Data sharing model
聯(lián)盟鏈中的各企業(yè)首先需要建立節(jié)點(diǎn),并以P2P 網(wǎng)絡(luò)的形式拼接形成鏈下去中心化的數(shù)據(jù)共享網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)上,通過(guò)建模可實(shí)現(xiàn)分布式的數(shù)據(jù)協(xié)作,根據(jù)客運(yùn)出行系統(tǒng)的業(yè)務(wù)場(chǎng)景確定共享的業(yè)務(wù)流程,定義各對(duì)等方形成的聯(lián)盟網(wǎng)絡(luò)。再聯(lián)合多方構(gòu)建業(yè)務(wù)流程,實(shí)現(xiàn)移動(dòng)計(jì)算、共享結(jié)果。區(qū)塊鏈提供共享安全性及可信的存儲(chǔ),引入數(shù)據(jù)共享合約實(shí)現(xiàn)數(shù)據(jù)鏈上精準(zhǔn)授權(quán),以及提供數(shù)據(jù)供需匹配、記錄收授。
鐵路客運(yùn)出行系統(tǒng)數(shù)據(jù)共享平臺(tái)為各種數(shù)據(jù)源構(gòu)建一套在聯(lián)盟鏈網(wǎng)絡(luò)中協(xié)作、共享的數(shù)據(jù)索引、定位、查詢、交換和數(shù)據(jù)追溯審計(jì)的統(tǒng)一實(shí)現(xiàn)標(biāo)準(zhǔn),并提供業(yè)務(wù)流程定制能力。數(shù)據(jù)共享流程分為數(shù)據(jù)提供方的發(fā)布和數(shù)據(jù)需求方的獲取使用,整個(gè)過(guò)程分為以下2 部分。
(1)數(shù)據(jù)提供方發(fā)布流程。數(shù)據(jù)共享過(guò)程分為數(shù)據(jù)的導(dǎo)入、命名、發(fā)布與同步。數(shù)據(jù)導(dǎo)入過(guò)程會(huì)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一標(biāo)識(shí),根據(jù)導(dǎo)入的數(shù)據(jù)類型不同,進(jìn)行不同的處理。數(shù)據(jù)命名通過(guò)自描述的數(shù)據(jù)結(jié)構(gòu),形成網(wǎng)絡(luò)唯一的ID,提供數(shù)據(jù)在網(wǎng)絡(luò)中的定位、查找能力。數(shù)據(jù)發(fā)布可共享數(shù)據(jù)的元信息至聯(lián)盟鏈,可為某些機(jī)構(gòu)設(shè)置默認(rèn)的訪問(wèn)權(quán)限。最后將數(shù)據(jù)元信息同步至數(shù)據(jù)共享平臺(tái),數(shù)據(jù)共享平臺(tái)是鏈上數(shù)據(jù)匯集的中心,任意方均可查詢,獲取此處的數(shù)據(jù)。
(2)數(shù)據(jù)需求方獲取流程。業(yè)務(wù)需求方獲取數(shù)據(jù),編排業(yè)務(wù)流程,啟動(dòng)數(shù)據(jù)共享,聯(lián)盟鏈節(jié)點(diǎn)會(huì)根據(jù)流程的指示分派共享任務(wù),同時(shí)節(jié)點(diǎn)的虛擬機(jī)會(huì)加載業(yè)務(wù)計(jì)算模型利用本地?cái)?shù)據(jù)執(zhí)行計(jì)算邏輯。獲取數(shù)據(jù)流程分為檢索、請(qǐng)求、獲取、使用4 步,首先通過(guò)數(shù)據(jù)共享平臺(tái)檢索所需要的數(shù)據(jù),再請(qǐng)求相關(guān)數(shù)據(jù)的訪問(wèn)憑證,根據(jù)數(shù)據(jù)發(fā)布的方式,請(qǐng)求數(shù)據(jù)時(shí)會(huì)進(jìn)行交易信息上鏈。數(shù)據(jù)需求方通過(guò)自身的業(yè)務(wù)定制流程及計(jì)算模型,根據(jù)流程流轉(zhuǎn)到不同的機(jī)構(gòu),通過(guò)網(wǎng)絡(luò)的節(jié)點(diǎn)ID 以及獲取到的數(shù)據(jù)的憑證向提供方獲取數(shù)據(jù)。最后計(jì)算模型會(huì)使用授權(quán)得到的數(shù)據(jù),通過(guò)加載模型來(lái)使用本方數(shù)據(jù),計(jì)算得到結(jié)果。
目前既有鐵路客運(yùn)出行服務(wù)系統(tǒng)是基于關(guān)系型數(shù)據(jù)庫(kù)構(gòu)建業(yè)務(wù),而區(qū)塊鏈的存儲(chǔ)數(shù)據(jù)庫(kù)僅支持鍵值對(duì)存儲(chǔ),當(dāng)業(yè)務(wù)系統(tǒng)需要對(duì)接區(qū)塊鏈系統(tǒng)時(shí)會(huì)帶來(lái)極高的成本。為解決這個(gè)問(wèn)題,鐵路客運(yùn)出行服務(wù)系統(tǒng)采用鏈上鏈下結(jié)合的方式來(lái)減少區(qū)塊鏈數(shù)據(jù)存儲(chǔ)的開(kāi)銷[8]??紤]到區(qū)塊共識(shí)、網(wǎng)絡(luò)通信、交易執(zhí)行是區(qū)塊鏈中最為耗時(shí)的過(guò)程,過(guò)多的數(shù)據(jù)采用鏈上存儲(chǔ)會(huì)嚴(yán)重影響系統(tǒng)的運(yùn)行效率,尤其在數(shù)據(jù)規(guī)模極大的情況下,直接將所有數(shù)據(jù)存儲(chǔ)于區(qū)塊鏈中將產(chǎn)生巨大的資源開(kāi)銷[9]。因此,鐵路客運(yùn)出行服務(wù)系統(tǒng)同步采用基于關(guān)系型數(shù)據(jù)庫(kù)的區(qū)塊鏈存儲(chǔ)技術(shù),理論上可通過(guò)設(shè)備擴(kuò)容使存儲(chǔ)空間無(wú)限擴(kuò)展,以空間換時(shí)間,以較小的代價(jià)提高鐵路客運(yùn)出行服務(wù)系統(tǒng)的數(shù)據(jù)存儲(chǔ)規(guī)模,提升系統(tǒng)運(yùn)行效率。
鏈下數(shù)據(jù)區(qū)采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)、內(nèi)存數(shù)據(jù)庫(kù)和文件系統(tǒng),可以存儲(chǔ)多種類型的數(shù)據(jù)。共享數(shù)據(jù)只在鏈下進(jìn)行存儲(chǔ),各企業(yè)應(yīng)用按照出行服務(wù)系統(tǒng)規(guī)范進(jìn)行數(shù)據(jù)組織和索引組織,調(diào)用系統(tǒng)接口完成共享數(shù)據(jù)的傳輸。服務(wù)系統(tǒng)負(fù)責(zé)組織共享數(shù)據(jù),完成數(shù)據(jù)匯聚、數(shù)據(jù)審核、數(shù)據(jù)檢索和數(shù)據(jù)使用等環(huán)節(jié)。交易憑證存放于鏈上的同時(shí),以多交易副本的形式同步存放到鏈下數(shù)據(jù)區(qū),以便于旅客、企業(yè)進(jìn)行查詢統(tǒng)計(jì)。歷史數(shù)據(jù)全部存放于關(guān)系型數(shù)據(jù)庫(kù)中,按照企業(yè)標(biāo)識(shí)、旅客標(biāo)識(shí)、交易標(biāo)識(shí)分別建立索引,可以方便生產(chǎn)企業(yè)統(tǒng)計(jì)本企業(yè)商品的交易情況,方便旅客查找自己的歷史訂單數(shù)據(jù);同時(shí)把訪問(wèn)頻率最高的近期交易數(shù)據(jù)存放于內(nèi)存數(shù)據(jù)庫(kù)中,提高系統(tǒng)的訪問(wèn)速度。當(dāng)區(qū)塊鏈上的數(shù)據(jù)規(guī)模較大時(shí),直接在鏈上存儲(chǔ)全部的原始數(shù)據(jù)會(huì)導(dǎo)致存儲(chǔ)開(kāi)銷極大,且降低系統(tǒng)的性能,針對(duì)此種情況,鐵路客運(yùn)出行服務(wù)系統(tǒng)采用鏈上鏈下混合存儲(chǔ)的方式。在混合存儲(chǔ)的模式中,區(qū)塊鏈中存儲(chǔ)的數(shù)據(jù)為原始數(shù)據(jù)的哈希值,而原始數(shù)據(jù)則存放在鏈下數(shù)據(jù)區(qū)中,如企業(yè)賬戶的營(yíng)業(yè)執(zhí)照、交易憑證中的發(fā)票信息,就采用鏈上鏈下混合存儲(chǔ)模式。鏈下數(shù)據(jù)不做為企業(yè)對(duì)賬的依據(jù),企業(yè)之間進(jìn)行對(duì)賬清算時(shí)以鏈上數(shù)據(jù)為準(zhǔn)。
目前鐵路客運(yùn)出行系統(tǒng)的清算需要多個(gè)企業(yè)及所在地銀行參與結(jié)算流程,同時(shí)需要中心機(jī)構(gòu)進(jìn)行對(duì)賬清算,由于參與方較多,且分布分散,清算過(guò)程中需要經(jīng)過(guò)諸多環(huán)節(jié)審批,流程冗長(zhǎng)。針對(duì)客運(yùn)出行領(lǐng)域中的場(chǎng)景復(fù)雜度和參與方復(fù)雜度,需設(shè)計(jì)一套高效的智能合約體系,以簡(jiǎn)化鐵路客運(yùn)出行服務(wù)系統(tǒng)清分結(jié)算流程,提升業(yè)務(wù)效率。
聯(lián)盟鏈中的智能合約主要支持EVM 虛擬機(jī)與JVM 虛擬機(jī),虛擬機(jī)在執(zhí)行合約時(shí),都是嚴(yán)格按順序執(zhí)行,和區(qū)塊鏈平臺(tái)高度耦合。但客運(yùn)出行中涉及業(yè)務(wù)眾多,且各業(yè)務(wù)之間并無(wú)直接關(guān)聯(lián)關(guān)系,此時(shí)交易與交易之間可以并發(fā)執(zhí)行,故考慮不同智能合約間的并行優(yōu)化以提高整體執(zhí)行效率。每一個(gè)智能合約對(duì)應(yīng)一個(gè)默克爾(Merkle)樹(shù),Merkle 樹(shù)是一種數(shù)據(jù)結(jié)構(gòu),它的所有節(jié)點(diǎn)都是哈希值。為了提高聯(lián)盟鏈計(jì)算效率,設(shè)計(jì)了一種新型數(shù)據(jù)結(jié)構(gòu),對(duì)Merkle 樹(shù)進(jìn)行優(yōu)化,同時(shí)對(duì)數(shù)據(jù)進(jìn)行緩存,避免高頻讀寫,提高計(jì)算性能,改進(jìn)后的Merkle樹(shù)如圖6 所示。
圖6 改進(jìn)后的Merkle 樹(shù)Fig.6 Improved Merkle tree
新的Merkle 樹(shù)增加了數(shù)據(jù)緩存層,其主要作用是用來(lái)接收、存儲(chǔ)數(shù)據(jù),并將其映射到對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)中,當(dāng)有新數(shù)據(jù)上鏈時(shí),數(shù)據(jù)層進(jìn)行哈希計(jì)算,并映射到桶節(jié)點(diǎn)中,最后生成新的根哈希返給外部。相對(duì)比原有的數(shù)據(jù)結(jié)構(gòu),新的結(jié)構(gòu)不僅可以大大提高M(jìn)erkle 樹(shù)的可擴(kuò)展性,同時(shí)也方便提前計(jì)算出每次數(shù)據(jù)更新所影響到的節(jié)點(diǎn),提高哈希計(jì)算的并行效率。
鐵路客運(yùn)出行服務(wù)系統(tǒng)可基于智能合約建立日清分、月結(jié)算應(yīng)用功能,依托智能合約的特性,按照客運(yùn)出行結(jié)算規(guī)則對(duì)智能合約進(jìn)行編程處理,只要各業(yè)務(wù)部分提供的結(jié)算數(shù)據(jù)都滿足合約代碼要求,日清月結(jié)結(jié)果就會(huì)自動(dòng)生成,處理完后的對(duì)賬結(jié)果會(huì)寫入合約的狀態(tài)數(shù)據(jù)庫(kù),方便追溯與查詢。智能合約的邏輯處理完后,需要修改Merkle樹(shù)。Merkle 樹(shù)中,將每一筆清分結(jié)算數(shù)據(jù)的哈希值兩兩進(jìn)行哈希運(yùn)算,最終得到一個(gè)哈希根值保存在區(qū)塊鏈頭中,而Merkel 樹(shù)本身屬于區(qū)塊體。相比較傳統(tǒng)的結(jié)賬方式,區(qū)塊鏈的對(duì)賬速度更快,點(diǎn)對(duì)點(diǎn)的交易模式省去大部分中間流程,實(shí)現(xiàn)自動(dòng)和實(shí)時(shí)交易。
區(qū)塊鏈已逐漸成為“價(jià)值互聯(lián)網(wǎng)”的重要基礎(chǔ)設(shè)施,引領(lǐng)全球新一輪技術(shù)變革和產(chǎn)業(yè)變革。區(qū)塊鏈技術(shù)的應(yīng)用,為鐵路系統(tǒng)和路內(nèi)外企業(yè)提供良好的信任基礎(chǔ)和信息安全機(jī)制,解決跨企業(yè)應(yīng)用各主體之間的信任問(wèn)題,保證交易信息的完整性、真實(shí)性、安全性、不可篡改、可溯源,降低各企業(yè)之間的對(duì)賬流程與成本,必將吸引更多的優(yōu)質(zhì)企業(yè)加入。同時(shí),隨著區(qū)塊鏈技術(shù)的成熟和鐵路行業(yè)監(jiān)管的完善,未來(lái)區(qū)塊鏈將和鐵路運(yùn)輸結(jié)合更加緊密,以不斷打造良好的鐵路發(fā)展環(huán)境,持續(xù)深入服務(wù)鐵路行業(yè)發(fā)展。