林 暢,姚劍敏,2,林志賢,2,嚴(yán) 群,2+
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108;2.晉江市博感電子科技有限公司,福建 晉江 362251)
全國汽車租賃行業(yè)的市場規(guī)模到2020年預(yù)計將達(dá)到近千億元。盡管汽車租賃行業(yè)的市場巨大,但仍然存在不少問題:①汽車租賃企業(yè)無法核實消費者有效身份信息;②消費者無法獲取車輛準(zhǔn)確信息;③汽車租賃企業(yè)無法準(zhǔn)確獲得消費者信用信息。將從比特幣核心設(shè)計中提煉出來的區(qū)塊鏈技術(shù)應(yīng)用到汽車租賃行業(yè),讓大家看到了塑造更高效、更安全的未來商業(yè)網(wǎng)絡(luò)的可能[1]。
為了簡化權(quán)限審查,文獻(xiàn)[2]利用區(qū)塊鏈技術(shù)打造審計聯(lián)盟服務(wù)器群和醫(yī)療機構(gòu)聯(lián)盟服務(wù)器群,幫助醫(yī)學(xué)人員快速地進(jìn)行權(quán)限認(rèn)證,實現(xiàn)醫(yī)療大數(shù)據(jù)的共享流通??紤]到投保人騙保情況的發(fā)生,文獻(xiàn)[3]將區(qū)塊鏈技術(shù)應(yīng)用到傳統(tǒng)保險行業(yè),設(shè)計出包含投保人、保險公司和政府部門三方一體的系統(tǒng)平臺,使其不僅能夠自動理賠,還能有效避免欺詐行為的發(fā)生。為了防止農(nóng)產(chǎn)品生產(chǎn)商欺詐消費者行為的發(fā)生,文獻(xiàn)[4]將傳統(tǒng)農(nóng)產(chǎn)品質(zhì)量安全追溯系統(tǒng)與區(qū)塊鏈技術(shù)結(jié)合,建成一個防欺詐、高效率的溯源系統(tǒng)。文獻(xiàn)[5]將區(qū)塊鏈技術(shù)與云技術(shù)相結(jié)合,設(shè)計了一個醫(yī)療數(shù)據(jù)記錄共享的方案,在該方案中用戶可以對數(shù)據(jù)進(jìn)行追溯和審查,實時管控數(shù)據(jù)。
基于上述分析,本文提出一種基于區(qū)塊鏈的汽車租賃方案,讓多個參與方共同記錄共享賬本,促進(jìn)數(shù)據(jù)的交易與流通,并可以實時地管理和追溯每一條數(shù)據(jù),促進(jìn)汽車租賃行業(yè)良好發(fā)展。
從2009年比特幣網(wǎng)絡(luò)上線至今,比特幣系統(tǒng)已經(jīng)安全穩(wěn)定的運行超過了10年時間,完成了數(shù)百億美元的交易。可以說區(qū)塊鏈技術(shù)成就了比特幣的偉大,而比特幣的成功向世界宣揚了區(qū)塊鏈技術(shù)。
區(qū)塊鏈?zhǔn)怯啥鄠€區(qū)塊鏈接組成的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)和存儲方式,每個區(qū)塊分為區(qū)塊頭和區(qū)塊體兩個部分,區(qū)塊頭主要用來實現(xiàn)區(qū)塊鏈接的前一區(qū)塊哈希值(hash value),而區(qū)塊體里的內(nèi)容主要包括交易信息,如圖1所示。
圖1 區(qū)塊鏈的賬本
區(qū)塊鏈技術(shù)實際上是一種由多方共同參與,持續(xù)增長的互聯(lián)網(wǎng)共享數(shù)據(jù)庫,它以密碼學(xué)技術(shù)作為基礎(chǔ),在此之上設(shè)計出多方共享的點對點分布式賬本[6]。區(qū)塊鏈技術(shù)包含了非對稱加密、數(shù)據(jù)區(qū)塊、鏈?zhǔn)浇Y(jié)構(gòu)、時間戳、哈希函數(shù)、Merkle樹等技術(shù),這些技術(shù)的融合使用,使其具有獨特的優(yōu)勢:可以追溯每一條交易信息、保證數(shù)據(jù)安全無法被篡改以及系統(tǒng)去中心化等[7,8]。世界上越來越多的科研機構(gòu)和研究人員開始對區(qū)塊鏈技術(shù)進(jìn)行研究,它在能源、醫(yī)療以及減少金融交易成本等各個領(lǐng)域都有廣泛的應(yīng)用[9]。
鏈碼(chaincode),源自智能合約的思想,并進(jìn)行了進(jìn)一步擴展,支持多種高級編程語言,通過可編程能力提供了對上次應(yīng)用的支持。其本質(zhì)上是開發(fā)者編寫的能夠在受保護(hù)的沙盒中安全穩(wěn)定運行的應(yīng)用程序。當(dāng)系統(tǒng)調(diào)用鏈碼時,鏈碼實現(xiàn)的接口與背書節(jié)點建立連接,響應(yīng)系統(tǒng)請求。
完成鏈碼部署步驟大致分為兩步,首先由各個參與方在線下對鏈碼需要完成的相關(guān)業(yè)務(wù)邏輯達(dá)成共識,然后用鏈碼實現(xiàn)達(dá)成共識的相關(guān)業(yè)務(wù)邏輯并將其部署在平臺上。在線上部署時,系統(tǒng)僅對部署者權(quán)限進(jìn)行檢查和鏈碼實現(xiàn)業(yè)務(wù)邏輯的執(zhí)行,并沒有在線上對共識進(jìn)行審核的流程[10]。
在完成鏈碼的部署之后,還需要對其進(jìn)行實例化操作,至此鏈碼才處于運行激活狀態(tài),之后平臺就可以調(diào)用 invoke 指令來執(zhí)行相關(guān)交易。在安裝時候,需要指定具體安裝到哪個peer節(jié)點(Endorser);實例化時候,還需要指定是在哪個通道內(nèi)進(jìn)行實例化。鏈碼安裝以后隨時都可以進(jìn)行升級。
將汽車租賃行業(yè)數(shù)據(jù)與區(qū)塊鏈技術(shù)相結(jié)合,基于聯(lián)盟鏈進(jìn)行去中心化汽車租賃方案設(shè)計。該方案主要包括4條獨立區(qū)塊鏈:個人信息管理鏈、汽車信息管理鏈、信用信息管理鏈和交易記錄管理鏈。
該方案主要功能為對個人身份信息進(jìn)行核實、追溯車輛所有權(quán)及車況信息、查看個人信用信息和汽車租賃交易信息上鏈功能。
相較于傳統(tǒng)互聯(lián)網(wǎng)汽車租賃行業(yè),所提出的方案以區(qū)塊鏈技術(shù)為基礎(chǔ),通過利用區(qū)塊鏈的去中心化、數(shù)據(jù)不可篡改以及可追蹤等特點,可以在汽車租賃企業(yè)間不斷更新完善騙租名單和租賃車輛信息,并協(xié)助找回被盜、被騙車輛,從而提高方案的自治化和公信力。
基于聯(lián)盟鏈進(jìn)行去中心化汽車租賃方案模型如圖2所示,該模型中存在4條獨立的區(qū)塊鏈,分別用來存儲不同的信息。
圖2 汽車租賃數(shù)據(jù)共享模型
(1)個人信息管理鏈(personal information management blockchain,PIMBC):對用戶的個人信息進(jìn)行確認(rèn),確保進(jìn)行汽車租賃的消費者身份信息準(zhǔn)確,沒有造假。需要不定時對個人信息進(jìn)行更新,此處的個人信息更新應(yīng)該由相關(guān)政府部門進(jìn)行維護(hù),如公安機關(guān)等。
(2)車輛信息管理鏈(vehicle information management blockchain,VIMBC):對每一輛進(jìn)行租賃的汽車進(jìn)行信息確認(rèn),確認(rèn)車輛來源是否違法,有無違章記錄,是否處于抵押狀態(tài),車輛是否超出使用年限等信息。該鏈上信息應(yīng)該由交管局等進(jìn)行更新維護(hù),確保信息來源準(zhǔn)確可靠。
(3)信用信息管理鏈(credit information management blockchain,CIMBC):對進(jìn)行租車的用戶進(jìn)行個人信用信息核實查證。確認(rèn)用戶是否有犯罪記錄、是否擁有足夠的資金以及信用記錄是否良好。核實用戶的信用信息可以確保后續(xù)租車服務(wù)能夠收到費用,并且在很大程度上避免騙租行為的發(fā)生。該鏈上信息應(yīng)該由征信中心以及相關(guān)汽車租賃企業(yè)等進(jìn)行更新維護(hù)。
(4)交易信息管理鏈(transaction information management blockchain,TIMBC):將租賃合同、租金、違約金等不可篡改數(shù)據(jù)上鏈。由于租賃合同會涉及到PIMBC、VIMBC、CIMBC上的數(shù)據(jù),所以它們中的部分節(jié)點將加入到TIMBC,由租賃平臺向PIMBC、VIMBC、CIMBC請求相關(guān)數(shù)據(jù),對交易內(nèi)容進(jìn)行核實完善后,將所有交易信息打包上鏈。
方案功能模塊架構(gòu)如圖3所示,主要包括4個部分:業(yè)務(wù)層、權(quán)限管理、共識機制、網(wǎng)絡(luò)層。
圖3 方案功能模塊架構(gòu)
汽車租賃方案,主要是在業(yè)務(wù)層上進(jìn)行應(yīng)用開發(fā)。上文提到的4條獨立的區(qū)塊鏈即位于4個通道內(nèi),是排序服務(wù)上劃分的彼此隔離的原子廣播渠道。交易過程實際上是平臺用戶調(diào)用已經(jīng)成功部署在平臺上的鏈碼執(zhí)行相關(guān)業(yè)務(wù)邏輯對賬本狀態(tài)進(jìn)行的一次改變。而賬本是平臺參與各方進(jìn)行交易,完成狀態(tài)轉(zhuǎn)換的所有有序、不可篡改的記錄。
賬本記錄中的最新狀態(tài)被建模為一個版本鍵/值存儲(KVS),更準(zhǔn)確地說是狀態(tài)s被建模為一個元素映射K→(V X N), 其中K是一組鍵,V是一組值,N是一個無線有序的版本號集。KVS操作模型可以描述為: put(k,v), K中的k和V中的v,處理賬本中狀態(tài)s,將它變?yōu)闋顟B(tài)s’,這樣s’(k)=(v,next(s(k).version)), 且s’(k’)=s(k’), 可以保證所有的k’!=k;get(k), 返回s(k)。
發(fā)生交易實際上就是對一個讀寫集合進(jìn)行接受的過程。由于通道相互獨立,隔離了交易,所以每個通道都擁有對應(yīng)的隔離的賬本結(jié)構(gòu)。
方案采用由Golang語言設(shè)計的beego框架完成前端和后端開發(fā),實現(xiàn)后端接收前段界面發(fā)來的請求,將處理后的響應(yīng)結(jié)果集再發(fā)送給前端界面。
整個方案的交易流程如圖4所示。
圖4 方案交易流程
首先由客戶端發(fā)出交易提案請求,作為調(diào)用鏈碼功能的請求來完成數(shù)據(jù)到賬本的讀取或?qū)懭搿=又杀硶?jié)點驗證簽名,并以交易提案憑證為輸入,基于當(dāng)前狀態(tài)的數(shù)據(jù)庫來模擬執(zhí)行提案,執(zhí)行生成交易結(jié)果,隨后將模擬的運行結(jié)果返回給客戶端,客戶端對返回的結(jié)果進(jìn)行審查。緊接著客戶端提交包含簽名背書和模擬執(zhí)行結(jié)果的交易。當(dāng)排序節(jié)點收到請求后,根據(jù)時間順序,創(chuàng)建區(qū)塊。然后將交易區(qū)塊發(fā)布給通道中的所有節(jié)點驗證區(qū)塊中的交易是否有效。如果交易有效,則將區(qū)塊加入到通道的鏈中并更新當(dāng)前狀態(tài)的數(shù)據(jù)庫。
在業(yè)務(wù)層進(jìn)行應(yīng)用開發(fā),首先要做的應(yīng)該是對鏈代碼進(jìn)設(shè)計編寫。方案共有4個不同的通道,用于存儲不同的信息,因此需在鏈代碼中聲明對應(yīng)的結(jié)構(gòu)來存儲相應(yīng)的信息。方便后續(xù)鏈代碼對相關(guān)數(shù)據(jù)的操作。
個人信息管理鏈(PIMBC)用于存儲于個人身份信息認(rèn)證相關(guān)的一些數(shù)據(jù),見表1,包括承租人姓名、承租人身份證號碼、承租人性別、家庭住址、手機號碼和工作地址。在提出的方案中,數(shù)據(jù)應(yīng)該由公安部門進(jìn)行維護(hù)。
表1 個人信息相關(guān)數(shù)據(jù)定義
車輛信息管理鏈(VIMBC)用于存儲出租車輛信息的相關(guān)數(shù)據(jù),見表2,包括車牌號碼、車輛所有者、登記日期、車輛型號、是否違章、是否抵押。用戶可以通過這些
表2 車輛信息相關(guān)數(shù)據(jù)定義
信息了解到出租車輛的基本信息,保障用戶權(quán)益。這些數(shù)據(jù)應(yīng)該由車管所進(jìn)行維護(hù)。
信用信息管理鏈(CIMBC)用于存儲個人信用信息的相關(guān)數(shù)據(jù),見表3,包括承租人姓名、承租人性別、承租人身份證號碼、信貸記錄、公共記錄和信用等級。通過信用信息,企業(yè)可以直觀了解到用戶的信用情況,有效規(guī)避風(fēng)險。這些數(shù)據(jù)應(yīng)該由征信機構(gòu)進(jìn)行更新維護(hù)。
表3 個人信用信息相關(guān)數(shù)據(jù)定義
交易信息管理鏈(TIMBC)用于存儲與交易相關(guān)的歷史租用一些數(shù)據(jù),見表4,包括電子合同的哈希值、訂單編號、承租人信息、租金、開始日期、結(jié)束日期和備注。用戶可以通過該鏈上信息了解到車輛的以往租金等情況,此數(shù)據(jù)應(yīng)該由汽車租賃平臺進(jìn)行更新維護(hù)。
表4 交易信息相關(guān)數(shù)據(jù)定義
3.5.1 汽車租賃相關(guān)信息加密上傳算法
平臺用戶(包括平臺管理者)在平臺上注冊,系統(tǒng)將根據(jù)用戶個人信息、注冊時間以及隨機數(shù),通過SHA256加密生成唯一的用戶ID,如式(1)所示
userID=SHA256(personalInfo+regTime+random)
(1)
為了確保個人身份信息、車輛所有權(quán)及車況信息、個人信用信息和汽車租賃交易信息在生成上傳中不被篡改,方案中使用ECC(elliptic curve cryptography)非對稱加密算法對信息進(jìn)行加密生成公私鑰,如式(2),式(3)所示
privateKey=SHA256(userID+timestamp+random)
(2)
publicKey=Secp256k1(privateKey)
(3)
其中,userID為唯一的用戶ID;timestamp是合同生成的時間戳;random為系統(tǒng)臨時生成的隨機數(shù);privateKey是由SHA256哈希算法生成的私鑰;publicKey是由ECC橢圓曲線算法Sepc256k1生成的公鑰。
因此,用戶在平臺上注冊后將會得到初始3個數(shù)字密碼,包括唯一的用戶ID:userID;公鑰:publicKey;私鑰:privateKey;如式(4)所示
CRBCuser{userId,publicKey,privateKey}
(4)
當(dāng)平臺用戶需要將信息上傳時,將利用公鑰publicKey完成對信息message的加密,得到加密文件EncryptedFile,如式(5)所示;再對加密文件使用SHA256哈希算法,得到唯一的加密文件哈希DocHash,如式(6)所示;隨后將DocHash當(dāng)作索引保存在區(qū)塊鏈中,將加密文件Encrypted-File存儲在云端
EncryptedFile=Encrypt(publicKey,message)
(5)
DocHash=SHA256(EncryptedFile)
(6)
汽車租賃相關(guān)信息加密上傳流程如圖5所示。用算法1表示完整的汽車租賃相關(guān)信息加密上傳過程。
圖5 汽車租賃相關(guān)信息加密上傳流程
算法1: 汽車租賃相關(guān)信息加密上傳
(1)Input:personalInfo,message
(2)Output:DocHash,EncryptedFiles
(3)begin
(4)while(用戶user首次使用)
(5){
(6) if(用戶首次注冊登錄)
(7) {
(8) 生成唯一用戶識別ID:
(9)userID=SHA256(personalInfo+regTime+random);
(10) }else{返回, 不執(zhí)行任何操作, break;}
(11) if(userID生成成功&&還未生成公私鑰)
(12) {
(13) 生成私鑰:
(14)privateKey=SHA256(userID+timestamp+random);
(15) 生成公鑰:
(16)publicKey=Secp256k1(privateKey);
(17) } else{返回, continue;}
(18) if(公私鑰生成成功&&讀取上傳信息成功)
(19) {
(20) 加密信息:
(21)EncryptedFile=Encrypt(publicKey,message);
(22) 得到加密文件哈希:
(23)DocHash=SHA256(EncryptedFile);
(24) returnEncryptedFile;
(25) } else{返回, continue;}
(26) if(將生成的DocHash在區(qū)塊鏈中檢查是否重復(fù))
(27) {
(28) 將DocHash當(dāng)做索引保存在區(qū)塊鏈中;
(29) 將EncryptedFile存儲在云端;
(30) }
(31) else{重復(fù)操作, 不執(zhí)行;}
(32)}
(33)end
3.5.2 汽車租賃相關(guān)信息獲取算法
針對汽車租賃的場景,當(dāng)汽車租賃公司需要調(diào)取相關(guān)信息(如個人信息)時,需要獲取DocHash,通過Doc-Hash從云端下載加密文件。下載得到相關(guān)信息的加密文件,汽車租賃公司無法解密,只能夠允許在汽車租賃平臺上注冊過的信息上傳管理者所持有的privateKey才能解密,保證了信息的安全性。同時為了確保信息不泄露,在解密之前需要對汽車租賃公司的簽名Signature進(jìn)行驗證,驗證通過并持有私鑰privateKey才能得到解密文件DecryptFile。解密公式如式(7)所示
DecryptFile=Decrypt(privateKey,EncryptedFile,Signature)
(7)
獲取汽車租賃相關(guān)信息流程如圖6所示。
圖6 獲取汽車租賃相關(guān)信息流程
整個解密獲取信息可用算法2表示。
算法2: 汽車租賃相關(guān)信息解密獲取
(1)Input:privateKey,EncryptedFile,Signature
(2)Output:DecryptFile
(3)begin
(4)while(汽車租賃公司Signature驗證通過)
(5){
(6) if(汽車租賃公司得到DocHash)
(7) {
(8) 通過DocHash從云端下載加密文件Encrypted-File;
(9) if(信息上傳管理者所持有的privateKey爭取)
(10) {
(11) 執(zhí)行解密算法, 得到解密文件:
(12)DecryptFile=Decrypt(privateKey,Encryp-tedFile,Signature)
(13) }
(14) }else{
(15) 授權(quán)汽車租賃公司獲得DocHash;
(16) }
(17)}
CRBC鏈代碼需要滿足查詢信息、添加信息等基礎(chǔ)功能。本節(jié)描述從部署鏈代碼到滿足基礎(chǔ)系統(tǒng)功能的全過程。
部署的鏈代碼需包含Init和Invoke兩個方法。Init方法在部署鏈代碼時候進(jìn)行初始化使用并對其中的一些屬性提前進(jìn)行配置,Invoke方法為鏈代碼執(zhí)行交易請求的方法,Invoke方法依據(jù)傳入的方法名調(diào)用指定方法實現(xiàn)特定功能。鏈碼應(yīng)用程序接口ChaincodeStubInterface能夠?qū)~本進(jìn)行訪問及修改,鏈碼之間也可以通過它進(jìn)行相互的調(diào)用,開發(fā)者使用它所提供的GetState、PutState等方法能夠?qū)^(qū)塊鏈進(jìn)行相關(guān)讀寫操作[11]。Init和Invoke函數(shù)的實現(xiàn)見表5。
表5 鏈碼Init和Invoke方法描述
Invoke函數(shù)中調(diào)用了相關(guān)功能函數(shù),這些功能函數(shù)主要實現(xiàn)將數(shù)據(jù)寫入賬本以及從賬本中讀取信息的功能。這些功能函數(shù)的實現(xiàn),需要使用相同的chaincode結(jié)構(gòu)體以及ChaincodeStubInterface參數(shù),利用PutState和GetState函數(shù)實現(xiàn)對賬本上數(shù)據(jù)讀寫的操作。以交易信息寫入賬本為例,對數(shù)據(jù)的寫操作方法進(jìn)行描述。數(shù)據(jù)寫入賬本功能函數(shù)的實現(xiàn)見表6。
表6 鏈碼中寫操作方法描述
在交易信息寫入賬本的過程中,以結(jié)構(gòu)體TranInfo中的OrderID為key,結(jié)構(gòu)體TranInfo中的所有內(nèi)容為value,上傳至賬本中,因此從賬本中讀取數(shù)據(jù)時,必須以唯一的訂單編號OrderID為key,從賬本中讀取數(shù)據(jù)。將寫入賬本的數(shù)據(jù)讀取出來的功能函數(shù)實現(xiàn)見表7。
表7 鏈碼中讀操作方法描述
本節(jié)實現(xiàn)的數(shù)據(jù)讀寫方法均是以交易信息為例,其它通道的個人信息、車輛信息以及個人信用信息數(shù)據(jù)讀寫操作也都與此大致相同。
在鏈代碼功能實現(xiàn)的基礎(chǔ)上,還需實現(xiàn)方案的后端功能。后端功能主要處理前端發(fā)送來的數(shù)據(jù)和請求,根據(jù)前端發(fā)送請求的不同,選擇將發(fā)送來的數(shù)據(jù)處理后記錄到賬本或者以發(fā)送來的數(shù)據(jù)作為憑證從賬本上讀取信息,并將查詢結(jié)果返回給前端。
方案選擇以Golang語言開發(fā)的beego框架為基礎(chǔ),進(jìn)行后端功能的開發(fā)。Beego是基于八大獨立的模塊構(gòu)建的,是一個高度解耦的框架,同時beego還是一個典型的MVC架構(gòu)。在后端的開發(fā)過程中,主要對beego框架中的models(模型)、controller(控制器)和route(路由)中的功能進(jìn)行實現(xiàn)。
根據(jù)在上文鏈碼提到的Invoke函數(shù)中被調(diào)用的相關(guān)功能函數(shù),在后端功能實現(xiàn)的工程中,需配置beego框架中的route(路由),讓后端依據(jù)所配置的route,實現(xiàn)對應(yīng)的處理函數(shù)。
在beego框架中route配置信息見表8。
表8 后端route模塊配置信息
route(路由)的配置,需要調(diào)用controller(控制器)模塊中的功能函數(shù),因此需要依據(jù)已配置好的路由,在controller中實現(xiàn)route中調(diào)用的函數(shù),用于獲取前端用戶輸入,同時調(diào)用beego框架中的models(模型)完成將數(shù)據(jù)寫入賬本和賬本中讀取數(shù)據(jù)的工作。添加和獲取交易信息controller模塊的實現(xiàn)見表9。
表9 后端controller模塊實現(xiàn)
controller模塊的完整實現(xiàn),還需要調(diào)用models模塊來完成,在models模塊中需要調(diào)用Fabric的SDK完成最終的數(shù)據(jù)寫入操作。將交易信息寫入賬本和從賬本中讀取信息的models模塊實現(xiàn)見表10。
表10 后端models模塊描述
方案的前端界面主要分為添加車輛信息、添加征信信息、添加交易信息、車輛信息查詢、征信信息查詢以及交易信息查詢6個入口。方案的前端功能仍是以beego框架作為基礎(chǔ)進(jìn)行實現(xiàn),主要在beego框架的views模塊和sta-tic 模塊上進(jìn)行開發(fā)。
前端功能主要負(fù)責(zé)根據(jù)前端頁面?zhèn)魉蛠淼恼埱?,與后端進(jìn)行交互,將數(shù)據(jù)寫入賬本或者從賬本中讀取出相關(guān)數(shù)據(jù)。
以添加交易信息為例,用戶在添加交易信息頁面,如圖7所示,輸入訂單編號等信息后點擊提交,系統(tǒng)根據(jù)route(路由)配置信息,調(diào)用controller模塊中的Add_TranInfo函數(shù)。接著Add_TranInfo函數(shù)將傳入的參數(shù)全部整合到一個數(shù)組,調(diào)用models模塊,由models模塊使用SDK將前端頁面?zhèn)魅氲臄?shù)據(jù)寫入賬本。汽車租賃平臺目錄界面如圖8所示。
圖7 添加交易信息頁面
圖8 汽車租賃平臺目錄界面
(1)底層區(qū)塊鏈技術(shù)的安全性決定了汽車租賃方案的安全性,這與每輪區(qū)塊的生成率(blockchain rate per round,簡記為f)息息相關(guān)[12]。區(qū)塊鏈安全性與f成反比關(guān)系,因此可以用1/f表示區(qū)塊鏈的安全性,f與區(qū)塊鏈中其它相關(guān)性能變量之間的關(guān)系如式(8)所示
(8)
其中,TransmissionSpeed表示區(qū)塊鏈上交易的傳播速度;BlockSize表示區(qū)塊的大??;區(qū)塊生成的時間間隔由BlockGenerationInterval表示。
另外,區(qū)塊大小和區(qū)塊生成時間間隔之間的關(guān)系如式(9)所示
BlockSize=BlockGenerationInterval×Q×M
(9)
其中,Q代表每秒上傳的交易數(shù)量,M代表每個交易的平均大小。對于汽車租賃平臺來說,每秒上傳的交易數(shù)量Q比較大,而且需要多方授權(quán),要求BlockGenerationInterval較低,因此區(qū)塊大小BlockSize可以基本保持不變。所以為了保證汽車租賃平臺的安全性,平臺需要保持較高的鏈上交易的傳播速度TransmissionSpeed。
由于汽車租賃平臺需要對權(quán)限審計所需時間要求較高,為了驗證汽車租賃平臺的交易性能夠滿足上述分析中安全性能的要求,本文對汽車租賃平臺在高并發(fā)的情況下進(jìn)行性能測試,測試過程主要針對汽車租賃平臺中讀取信息請求以及寫入信息請求,測試指標(biāo)包括在不同并發(fā)量下單位時間內(nèi)的請求響應(yīng)數(shù)以及平均響應(yīng)時間。
測試過程中,系統(tǒng)并發(fā)量從0逐漸遞增至5000,每次并發(fā)量遞增100。測試設(shè)備選用兩臺操作系統(tǒng)為ubuntu16.0,內(nèi)存16 G,CPU為i7-7700 K的主機模擬用戶和平臺,進(jìn)行性能測試。為了確保數(shù)據(jù)準(zhǔn)確,性能測試共進(jìn)行5次,最終結(jié)果取平均值。
從圖9性能測試結(jié)果可以看出,當(dāng)讀取信息的請求并發(fā)量在2500以內(nèi)時,系統(tǒng)整體表現(xiàn)較為平穩(wěn),沒有過大波動,單位時間內(nèi)的請求響應(yīng)數(shù)穩(wěn)定在1400~1600之間。在此并發(fā)量下,請求響應(yīng)所需的時間低于2 s。
圖9 讀取信息請求性能測試結(jié)果
寫入信息請求的性能測試結(jié)果如圖10所示,當(dāng)寫入信息的請求并發(fā)量在2000以內(nèi)時,系統(tǒng)整體表現(xiàn)較為平穩(wěn),單位時間內(nèi)的請求響應(yīng)數(shù)穩(wěn)定在400左右,超過2000后,單位時間內(nèi)的響應(yīng)數(shù)隨著并發(fā)量的增加逐漸減少,性能逐漸下降。當(dāng)寫入請求系統(tǒng)并發(fā)量為2000時,請求響應(yīng)所需的時間為4 s左右。
圖10 寫入信息請求性能測試結(jié)果
比特幣的BlockGenerationInterval為10 min,與其相比,CRBC的響應(yīng)時間遠(yuǎn)低于比特幣,交易傳播速度TransmissionSpeed快,安全性能得到保障,同時,方案在信息中加入了時間戳,能夠抵御攻擊者發(fā)動的重放攻擊。
(2)在信息加密上傳和獲取解密部分,方案采用了ECC非對稱加密技術(shù),在得到加密后文件后必須通過數(shù)字簽名的驗證,并且得到私鑰privaKey,才能夠解密。攻擊者想在沒有授權(quán)且沒有獲得私鑰privateKey情況下,對非法獲得的加密文件EncryptedFile進(jìn)行解密是十分困難的。
(3)CRBC目的是對參與方的數(shù)據(jù)共享權(quán)限進(jìn)行精細(xì)化管控,可以讓數(shù)據(jù)安全地在多方之間流動,促進(jìn)數(shù)據(jù)的交易與流通,并可以實時地管理和追溯每一條數(shù)據(jù),解決非安全環(huán)境下的信任問題。CRBC以聯(lián)盟鏈為基礎(chǔ),改善了公有鏈無人監(jiān)管的問題,CRBC與傳統(tǒng)汽車租賃平臺以及公有鏈模型的對比見表11。
表11 多平臺對比
區(qū)塊鏈技術(shù)本質(zhì)上是一種數(shù)據(jù)庫,用于存儲線上平臺成員之間共同記錄的賬本,它與傳統(tǒng)數(shù)據(jù)庫之間相比最明顯的優(yōu)勢在于分布式存儲與去中心化管理[13]。方案依據(jù)區(qū)塊鏈技術(shù)去中心化、數(shù)據(jù)不可篡改以及可追蹤等特點,研究設(shè)計了基于區(qū)塊鏈技術(shù)的汽車租賃方案,該方案采用非對稱加密,讓多方共同參與維護(hù)賬本,保證了數(shù)據(jù)在安全的情況下進(jìn)行多方共享,使數(shù)據(jù)最大利用化,保證了方案的自治化與公信力。但該方案在具體的實現(xiàn)過程中仍存在一定的問題與挑戰(zhàn)需要解決,如讓公安部門、車管所、征信機構(gòu)等政府部門參與進(jìn)來,共享海量數(shù)據(jù),共同維護(hù)方案的運行,存在一定的難度,而且當(dāng)交易量日益增大時,對方案的共識機制也是很大的挑戰(zhàn)。解決上述問題,對方案進(jìn)一步落地,具有重要意義。區(qū)塊鏈技術(shù)作為一項新興技術(shù),雖有許多不足和缺點有待改進(jìn),但是眾多開發(fā)者仍在不斷開發(fā)完善區(qū)塊鏈技術(shù),促使區(qū)塊鏈項目早日落地實施。方案對區(qū)塊鏈技術(shù)在汽車租賃方面的應(yīng)用提出了設(shè)計方案,希望能為汽車租賃行業(yè)存在的痛點提供新的解決思路,也希望能對后續(xù)區(qū)塊鏈的應(yīng)用研究有一些啟發(fā)與建議。