盧鑫海,余建坤
(1.云南財經(jīng)大學(xué) 信息學(xué)院;2.云南省經(jīng)濟社會大數(shù)據(jù)研究院,云南 昆明 650221)
我國每年汽車保有量呈不斷增長趨勢,二手車交易量也屢創(chuàng)新高。據(jù)2020 年2 月中國汽車流通協(xié)會發(fā)布的《2019 年全國二手車市場分析》顯示,全國累計交易二手車1 492.28 萬輛,同比增長7.96%。從跨區(qū)域流通情況來看,2019 年7 月開始,轉(zhuǎn)籍比例呈下降趨勢,并低于歷史同期。在二手車市場快速發(fā)展的同時,也存在多種問題:信任度低,有些企業(yè)經(jīng)營者對用戶打虛假廣告,蓄意隱瞞車輛真實狀況,用戶難以溯源車輛歷史數(shù)據(jù);流通性差,如果異地買車,用戶必須親自到現(xiàn)場驗車,中間環(huán)節(jié)會大量耗費財力與精力,導(dǎo)致車輛流通不順暢等[1]。隨著網(wǎng)絡(luò)信息技術(shù)的發(fā)展,許多學(xué)者在二手車交易系統(tǒng)研究過程中進行了大量應(yīng)用性實踐。如宋國柱[2]應(yīng)用J2EE 等技術(shù)框架,設(shè)計并實現(xiàn)了一個二手車交易管理系統(tǒng),可方便、快捷地管理二手車車源、訂單等信息;袁瑩靜等[3]運用Visual Studio 軟件實現(xiàn)了一個二手車交易平臺,提升了商品的流通性;吳文川[4]提出一個二手車C2C(Customer to Customer)系統(tǒng),以APP 為載體提供更透明的二手車信息售賣方式;馮波[5]提出基于Java Script 的二手車估價平臺,方便用戶了解二手車在當(dāng)前市場的鑒定評估行情;苗得慶[6]實現(xiàn)了基于SaaS平臺的二手車鑒定評估與置換系統(tǒng),為準(zhǔn)確鑒定評估車輛發(fā)揮了輔助性作用。以上應(yīng)用研究雖然使二手車交易更加便捷,但仍然存在一些問題。例如第三方數(shù)據(jù)庫的存儲方法不能避免人為因素的影響,數(shù)據(jù)存在被偽造、被篡改的潛在風(fēng)險,資產(chǎn)難以確權(quán)與防偽溯源,也無法避免中心化系統(tǒng)存在的單點故障問題等??梢姡壳叭匀粵]有最優(yōu)方式解決二手車交易存在的問題。
2008 年,一位化名為“中本聰”的學(xué)者提出比特幣系統(tǒng)[7],其是去中心化加密數(shù)字貨幣系統(tǒng)的典型代表。比特幣系統(tǒng)率先引進區(qū)塊鏈思想,區(qū)塊鏈技術(shù)具有去中心化、不可篡改、可溯源、公開透明等特點[8-9],為解決資產(chǎn)交易系統(tǒng)存在的可信度低、難溯源、單點故障等問題帶來了新思路。
針對二手車交易現(xiàn)狀,本文提出一種基于區(qū)塊鏈的二手車交易系統(tǒng)方案,將區(qū)塊鏈技術(shù)與二手車交易相結(jié)合,其具有以下優(yōu)勢:①提高二手車交易過程中的信任度,加快車輛流通;②保證交易數(shù)據(jù)安全、不可篡改,且具有可追溯性,防止交易抵賴;③分布式存儲賬本數(shù)據(jù),系統(tǒng)由單中心變?yōu)槎嘀行幕?,避免出現(xiàn)單點故障問題。
區(qū)塊鏈?zhǔn)且粋€公共賬本,是一系列包含交易和信息的數(shù)據(jù)塊以順序相連的方式組合成的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)[10]。賬本可記錄多方資金的往來記錄、物品交換記錄等。區(qū)塊鏈對數(shù)據(jù)進行分布式加密存儲,融合了數(shù)學(xué)、計算機、密碼學(xué)等多個學(xué)科的成果,具有去中心化、天然互信、數(shù)據(jù)不可篡改等特點,已被用于金融、征信、貿(mào)易等多個領(lǐng)域[11]。典型的區(qū)塊鏈架構(gòu)由6 層組成,由下至上分別為數(shù)據(jù)層、傳輸層、共識層、激勵層、合約層和應(yīng)用層[12],如圖1 所示。
Fig.1 Blockchain architecture model圖1 區(qū)塊鏈架構(gòu)模型
其中,數(shù)據(jù)層實現(xiàn)了數(shù)據(jù)存儲,并通過非對稱公私鑰數(shù)據(jù)加密和時間戳等技術(shù)保證了賬戶與交易安全;網(wǎng)絡(luò)層則包括分布式組網(wǎng)機制、數(shù)據(jù)傳播機制和數(shù)據(jù)驗證機制等;共識層主要封裝網(wǎng)絡(luò)節(jié)點的各類共識算法;激勵層一般出現(xiàn)在公有鏈中,定義了獎懲機制來制約節(jié)點參與交易驗證行為;合約層主要包括各類腳本、算法機制及智能合約,是區(qū)塊鏈可編程特性的基礎(chǔ);應(yīng)用層則封裝了區(qū)塊鏈的各種應(yīng)用場景和案例。在區(qū)塊鏈的6 層結(jié)構(gòu)模型中,基于時間戳的區(qū)塊排序、共識算法、對節(jié)點進行激勵以及智能合約開發(fā)與部署是最具代表性的創(chuàng)新點。
根據(jù)對外開放程度和權(quán)限管理的不同,區(qū)塊鏈可分為公有鏈、私有鏈和聯(lián)盟鏈3 類[13]。公有鏈去中心化程度最高,被認(rèn)為是完全去中心化。在公有鏈中,每個節(jié)點可以自由加入或退出網(wǎng)絡(luò),加入網(wǎng)絡(luò)中的每個節(jié)點都能讀取數(shù)據(jù)、參與交易、競爭記賬權(quán)。私有鏈則完全封閉,其寫入權(quán)限由某個組織和機構(gòu)控制,參與節(jié)點的資格會被嚴(yán)格限制。聯(lián)盟鏈則是半公開的,是指有若干個機構(gòu)共同參與管理的區(qū)塊鏈,每個機構(gòu)都運行著一個或多個節(jié)點,其中的數(shù)據(jù)只允許系統(tǒng)內(nèi)不同機構(gòu)進行讀寫及發(fā)送交易,并且共同記錄交易數(shù)據(jù),如農(nóng)產(chǎn)品聯(lián)盟鏈等[14]。
公有鏈、私有鏈與聯(lián)盟鏈的特點比較如表1 所示。
Table 1 Comparison of the characteristics of three blockchain types表1 3 種區(qū)塊鏈特點比較
智能合約最早由尼克薩博于1994 年提出[15],并將其定義為“一套以數(shù)字形式指定的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”。智能合約是合約協(xié)議的數(shù)字化代碼表達,通過預(yù)置的響應(yīng)事件、響應(yīng)規(guī)則,根據(jù)不同輸入內(nèi)容輸出對應(yīng)結(jié)果[16]。區(qū)塊鏈借助智能合約的可編程性封裝了去中心化網(wǎng)絡(luò)中節(jié)點的復(fù)雜行為,逐漸成為智能合約最主要的計算場景。目前智能合約的主流開發(fā)平臺是超級賬本(Hyperledger Fabric)和以太坊(Ethereum)。在超級賬本中,智能合約又稱為鏈碼,部署在組織的背書節(jié)點上,并運行在Docker 容器[17]中。開發(fā)者利用鏈碼與區(qū)塊鏈底層交互以開發(fā)業(yè)務(wù)、定義資產(chǎn)及管理去中心化應(yīng)用。在以太坊中,合約在以太坊虛擬機中執(zhí)行,每次執(zhí)行需要消耗當(dāng)前賬戶一定的燃油費,避免系統(tǒng)因惡意程序走向失控[18]。由于智能合約具有較低的運行成本和人為干預(yù)風(fēng)險,以及執(zhí)行準(zhǔn)確等特性,目前被應(yīng)用于很多領(lǐng)域和場景中,如資產(chǎn)交易、身份管理、醫(yī)療隱私記錄及眾籌等。
超級賬本是Linux 基金會于2015 年發(fā)起的推進區(qū)塊鏈技術(shù)與交易驗證的開源項目[19],其具有去中心化、天然互信、數(shù)據(jù)不可篡改、多通道等特點[20]。相比于比特幣和以太坊,超級賬本屬于聯(lián)盟鏈,具有權(quán)限控制的優(yōu)勢,安全程度較高[21]。Fabric 提供的SDK 接口、可插拔的共識算法和鏈碼服務(wù)對開發(fā)者更加友好。Fabric 為開發(fā)者提供了開發(fā)接口,使用簡單,因而便于開發(fā)。在API 的基礎(chǔ)上,又針對Java、Node.js 和Go 語言封裝了不同的SDK。其事件模塊是指在鏈碼中定義的事件可通過應(yīng)用程序監(jiān)聽,當(dāng)監(jiān)聽事件被觸發(fā)時,則執(zhí)行預(yù)先定義好的回調(diào)函數(shù)。所以本文以Fabric 作為區(qū)塊鏈實現(xiàn)方式,設(shè)計基于區(qū)塊鏈的二手車交易系統(tǒng)模型。
為提高二手車交易市場的安全性和可信度,結(jié)合區(qū)塊鏈應(yīng)用架構(gòu),提出基于區(qū)塊鏈的二手車交易模型,如圖2 所示。使用區(qū)塊鏈技術(shù)對數(shù)據(jù)的存儲與使用方式作出改進,取代了中心化的存儲中心。
Fig.2 Second-hand car trading system model圖2 二手車交易系統(tǒng)模型
針對系統(tǒng)管理員、大眾用戶與機構(gòu)管理員,可支持C/S和B/S 兩種架構(gòu)模式,用戶通過手機APP 或網(wǎng)頁平臺完成資產(chǎn)交易過程。交易中心系統(tǒng)主要完成對用戶請求的處理,若請求需要訪問或改變公共賬本數(shù)據(jù),則將該請求轉(zhuǎn)發(fā)到區(qū)塊鏈網(wǎng)絡(luò),調(diào)用區(qū)塊鏈應(yīng)用層上的智能合約完成該請求。若只是查詢車輛信息,則由管理服務(wù)層的交易中心系統(tǒng)直接對狀態(tài)數(shù)據(jù)庫進行查詢。區(qū)塊鏈網(wǎng)絡(luò)是由多臺服務(wù)器共同組成的一個分布式網(wǎng)絡(luò),狀態(tài)數(shù)據(jù)庫按照時間順利記錄每一筆資產(chǎn)交易,賬本只能添加而不能刪減,以保證數(shù)據(jù)變化可追溯。
基于區(qū)塊鏈的二手車交易系統(tǒng)架構(gòu)如圖3 所示,主要由區(qū)塊鏈層、管理服務(wù)層、應(yīng)用層與交互層構(gòu)成。
Fig.3 Architecture of second-hand car trading system圖3 二手車交易系統(tǒng)架構(gòu)
(1)區(qū)塊鏈層。區(qū)塊鏈層由狀態(tài)數(shù)據(jù)庫、網(wǎng)絡(luò)通信模塊、共識算法、智能合約等組成。用戶與車輛相關(guān)信息存儲在狀態(tài)數(shù)據(jù)中,可被外部程序快速訪問,即使?fàn)顟B(tài)數(shù)據(jù)庫中的數(shù)據(jù)丟失,也可根據(jù)區(qū)塊中的交易記錄找回丟失的數(shù)據(jù)。共識算法的功能是將交易排序,達成共識后按照一定的時間間隔打包成區(qū)塊。由于聯(lián)盟鏈中可能存在拜占庭節(jié)點和因宕機產(chǎn)生的無效節(jié)點,綜合考慮系統(tǒng)的安全性和性能,本文采用PBFT 共識算法。智能合約針對上層發(fā)送的申請,通過預(yù)置的響應(yīng)規(guī)則輸出對應(yīng)結(jié)果。
(2)管理服務(wù)層。管理服務(wù)層是連接應(yīng)用層與區(qū)塊鏈層的橋梁,主要提供交易請求傳遞、賬本查詢、車輛管理等功能。用戶對于不同組織發(fā)起的請求,通過管理服務(wù)層轉(zhuǎn)發(fā)到對應(yīng)的組織節(jié)點上。若請求需要改變狀態(tài)數(shù)據(jù)庫的數(shù)據(jù),則將該請求轉(zhuǎn)發(fā)到區(qū)塊鏈層,由區(qū)塊鏈層上的智能合約完成。若只是對二手車信息進行查詢,則由管理服務(wù)層的交易中心完成。新節(jié)點加入?yún)^(qū)塊鏈網(wǎng)絡(luò)時,管理服務(wù)層使用Fabric 提供的CA 組件對節(jié)點進行認(rèn)證,以實現(xiàn)節(jié)點的權(quán)限管理。
(3)應(yīng)用層。應(yīng)用層為系統(tǒng)管理員、大眾用戶、機構(gòu)管理員3 類角色提供服務(wù)。系統(tǒng)管理員的職責(zé)是更新、維護二手車交易系統(tǒng),保障其穩(wěn)定運行。用戶可進行開戶、銷戶、二手車交易、二手車溯源數(shù)據(jù)查詢、交易記錄查詢等操作。機構(gòu)管理員負(fù)責(zé)監(jiān)督上鏈的二手車各項數(shù)據(jù)的真實性,并對存在問題的用戶發(fā)出警告。
(4)交互層。交互層包括手機APP、桌面端應(yīng)用、Web應(yīng)用、微信小程序等,是系統(tǒng)與用戶之間的接口,可提供便捷的系統(tǒng)操作途徑。
智能合約定義了交易規(guī)則,保證機構(gòu)間業(yè)務(wù)邏輯的可信執(zhí)行,因此編寫安全、可靠的智能合約對于二手車交易至關(guān)重要。為了不受系統(tǒng)環(huán)境的影響,智能合約的執(zhí)行環(huán)境使用Docker 容器。Docker 可將軟件及其環(huán)境依賴打包成標(biāo)準(zhǔn)化單元,不需要虛擬整個操作系統(tǒng),只需虛擬環(huán)境即可。根據(jù)二手車交易系統(tǒng)的實際需求,智能合約主要實現(xiàn)用戶開戶與銷戶、資產(chǎn)上鏈、資產(chǎn)交易、用戶查詢、資產(chǎn)溯源等功能,其智能合約接口列表如表2 所示。
Table 2 Interface list表2 接口列表
本系統(tǒng)通過Fabric 搭建底層的區(qū)塊鏈網(wǎng)絡(luò),并將智能合約部署到區(qū)塊鏈網(wǎng)絡(luò)的合約層上,以實現(xiàn)數(shù)字資產(chǎn)交易的自動化與智能化,確保交易數(shù)據(jù)的安全性與透明性。
區(qū)塊鏈層中包含4 種節(jié)點類型,分別是背書節(jié)點、主節(jié)點、記賬節(jié)點和排序節(jié)點。不同類型的節(jié)點功能如圖4 所示。背書節(jié)點、主節(jié)點、記賬節(jié)點是組織內(nèi)部的節(jié)點,統(tǒng)稱為Peer 節(jié)點。背書節(jié)點的主要作用是執(zhí)行智能合約以及為交易作擔(dān)保;主節(jié)點由網(wǎng)絡(luò)初始化時的配置文件指定,是組織內(nèi)部唯一與排序節(jié)點通信的節(jié)點;所有Peer 節(jié)點都是記賬節(jié)點,記賬節(jié)點的主要功能是更新狀態(tài)數(shù)據(jù)庫中的數(shù)據(jù);實現(xiàn)共識的節(jié)點為排序節(jié)點,排序節(jié)點的功能是從客戶端接收交易,并對交易進行排序,達成共識后按照一定的時間間隔打包成區(qū)塊,分發(fā)給其它組織的主節(jié)點。
Fig.4 Four types of node functionality圖4 4 種類型節(jié)點功能
用戶的資產(chǎn)交易過程可分為“背書—排序—驗證”3 個階段。第一階段為背書階段,用戶通過交互層中的應(yīng)用程序?qū)⒔灰装l(fā)送到組織中的背書節(jié)點上,背書節(jié)點收到客戶端請求,驗證通過后模擬執(zhí)行智能合約,將交易結(jié)果和背書節(jié)點簽名返回給客戶端。該階段的執(zhí)行結(jié)果不會改變狀態(tài)數(shù)據(jù)庫,只有經(jīng)過排序階段確認(rèn)后,賬本數(shù)據(jù)才會更新。如果沒有背書階段,為了達成共識,各個階段都需要執(zhí)行智能合約,將會影響系統(tǒng)交易處理速度。第二階段為排序階段。排序節(jié)點對交易進行排序,并將一段時間間隔內(nèi)的交易集合打包生成區(qū)塊。以PBFT 共識算法為例,當(dāng)共識節(jié)點收到客戶端發(fā)來的交易時,會對交易進行驗證,包括客戶端簽名和背書節(jié)點簽名。在驗證通過后,經(jīng)過三階段協(xié)議達成共識。第三階段為驗證階段。排序節(jié)點將區(qū)塊廣播到組織中的主節(jié)點,主節(jié)點使用交易讀寫集中的讀集部分驗證區(qū)塊中交易的有效性。驗證通過后保存區(qū)塊,更新狀態(tài)數(shù)據(jù)中的數(shù)據(jù),同時通過Gossip 協(xié)議同步區(qū)塊數(shù)據(jù)到組織中的記賬節(jié)點上。3 個階段整體流程如圖5 所示。
在“背書—排序—驗證”三階段中,背書策略和背書過程確保了智能合約按照業(yè)務(wù)邏輯正確執(zhí)行。排序服務(wù)確保了節(jié)點對交易順序的一致性達成共識。記賬節(jié)點根據(jù)相同規(guī)則對每筆交易數(shù)據(jù)進行驗證,從而在交易內(nèi)容的合法性上達成共識?;凇氨硶判颉炞C”的交易流程能有效將信任模型同底層的共識協(xié)議相解耦,將最為耗時的交易執(zhí)行操作交由背書節(jié)點執(zhí)行,共識過程只負(fù)責(zé)交易內(nèi)容驗證與排序,從而加快了交易寫入?yún)^(qū)塊的速度。
Fig.5 Flow of system transactions圖5 系統(tǒng)交易流程
智能合約給區(qū)塊鏈提供核心交易處理的應(yīng)用接口,通過調(diào)用該接口,交易能自動執(zhí)行,并向區(qū)塊鏈系統(tǒng)返回執(zhí)行結(jié)果。智能合約必須被部署安裝在鏈上,才能實現(xiàn)對節(jié)點的讀寫操作。智能合約的業(yè)務(wù)對象包括用戶、二手車資產(chǎn)、資產(chǎn)溯源數(shù)據(jù)等。用戶對象屬性包括用戶名、用戶標(biāo)識、資產(chǎn)列表,資產(chǎn)列表可為空。資產(chǎn)對象屬性包括資產(chǎn)名、資產(chǎn)標(biāo)識、配置等。資產(chǎn)溯源數(shù)據(jù)對象的數(shù)據(jù)包括資產(chǎn)標(biāo)識、資產(chǎn)原始擁有者、資產(chǎn)現(xiàn)在的擁有者。系統(tǒng)最核心的功能為開戶、資產(chǎn)上鏈、資產(chǎn)交易、資產(chǎn)溯源數(shù)據(jù)查詢等。
用戶在系統(tǒng)上的活動流程是首先通過客戶端調(diào)用鏈碼傳入用戶名,并進行用戶標(biāo)識開戶,然后使用用戶名和用戶標(biāo)識進行登錄。開戶的合約偽代碼如下:
用戶在系統(tǒng)上傳入二手車名稱、二手車標(biāo)識、配置參數(shù)、擁有者標(biāo)識進行資產(chǎn)上鏈,機構(gòu)管理員對上鏈后的資產(chǎn)信息進行核對,其他用戶也可對資產(chǎn)進行查詢與交易。資產(chǎn)上鏈的合約偽代碼如下:
在資產(chǎn)交易過程中,區(qū)塊鏈系統(tǒng)首先要確定商品庫存信息和買賣雙方信息,當(dāng)庫存大于零時才能繼續(xù)交易。之后對賣方是否擁有當(dāng)前資產(chǎn)進行驗證,驗證通過后交易繼續(xù)執(zhí)行。二手車交易實現(xiàn)的偽代碼如下:
用戶可在系統(tǒng)上查詢二手車相關(guān)配置信息和歷史交易記錄。實現(xiàn)的合約偽代碼如下:
在完成區(qū)塊鏈網(wǎng)絡(luò)環(huán)境初始化并實現(xiàn)智能合約后,對模型中的管理服務(wù)層和應(yīng)用層進行實現(xiàn)。實現(xiàn)管理服務(wù)層的交易中心系統(tǒng)時,通過Fabric 提供的SDK 把合約函數(shù)封裝成應(yīng)用層可調(diào)用的接口。若應(yīng)用層接收到交互層發(fā)來的請求涉及賬本數(shù)據(jù)改變,則將該請求轉(zhuǎn)發(fā)至區(qū)塊鏈層,交由智能合約完成。若只是對商品進行查詢,則由交易中心系統(tǒng)完成。
將本文的二手車交易系統(tǒng)與二手車交易市場及傳統(tǒng)商品交易系統(tǒng)進行比較,如表3 所示。
Table 3 Comparison of advantages and disadvantages表3 優(yōu)缺點比較
綜上,本文設(shè)計的基于區(qū)塊鏈的二手車交易系統(tǒng)能很好地提高二手車交易環(huán)境的信任度與流通性,去中心化的鏈?zhǔn)酱鎯Y(jié)構(gòu)能保證車輛參數(shù)不可篡改,且可溯源,同時避免了單點故障問題。但共識過程中通信開銷較大,用戶節(jié)點數(shù)越多,共識效率越低,僅適合節(jié)點規(guī)模較小的交易場景。因此,下一步將對共識算法展開研究,設(shè)計出一款可適合較大用戶規(guī)模、可信、高效的共識算法。
本文針對當(dāng)前二手車交易市場存在的信任度低、難溯源、流通慢等問題,結(jié)合超級賬本的架構(gòu)和特點,研究設(shè)計了基于區(qū)塊鏈的二手車交易模型。系統(tǒng)采用“背書—排序—驗證”的交易流程,通過智能合約進行了業(yè)務(wù)邏輯的實現(xiàn),實現(xiàn)了資產(chǎn)上鏈、資產(chǎn)交易、資產(chǎn)溯源等基本功能,保障了系統(tǒng)的可信性。但目前系統(tǒng)仍處于雛形,還有繼續(xù)完善的空間。接下來將進一步實現(xiàn)并豐富交互層,以改善用戶體驗,并對共識算法進行優(yōu)化,提高系統(tǒng)吞吐量,保證系統(tǒng)穩(wěn)定、高效地運行。