馮貴蘭,李正楠
1.中國(guó)民航飛行學(xué)院 現(xiàn)代教育技術(shù)中心,四川 廣漢618307
2.中國(guó)民航飛行學(xué)院 航空工程學(xué)院,四川 廣漢618307
預(yù)付卡應(yīng)用是一種以營(yíng)利為目的發(fā)行的,在發(fā)行機(jī)構(gòu)制定范圍內(nèi)購(gòu)買商品或服務(wù)的商業(yè)模式,其形態(tài)種類多樣,包括健身卡、美容卡、商家會(huì)員卡等。預(yù)付卡既能幫助商家快速回籠資金和穩(wěn)定客源,又能讓消費(fèi)者享受優(yōu)惠的折扣,因此這種商業(yè)模式深受商家和消費(fèi)者的歡迎。在最近的一項(xiàng)調(diào)查中發(fā)現(xiàn),絕大多數(shù)的青少年均申請(qǐng)了會(huì)員卡,78.41%的消費(fèi)者辦理的預(yù)付卡少于3張。19.32%的消費(fèi)者辦理4~7張卡,1.14%的消費(fèi)者辦理了8~10張卡,1.14%的消費(fèi)者辦理了10張以上的卡[1]。但是預(yù)付卡在給人們?nèi)粘I顜肀憷耐瑫r(shí),也帶來了諸多問題。一是持卡人信息不對(duì)稱。預(yù)付卡是由商家壟斷發(fā)行的,有的商家私設(shè)霸王條款,刻意剝奪消費(fèi)者權(quán)利,突出消費(fèi)者義務(wù),侵犯消費(fèi)者的合法權(quán)益[2]。二是發(fā)卡人毀約違約、欺詐。預(yù)付卡發(fā)卡人信用資質(zhì)不齊。有的發(fā)卡人過度投放預(yù)付卡后會(huì)出現(xiàn)門店經(jīng)營(yíng)不善、停業(yè)倒閉;有的發(fā)卡人虛構(gòu)商品或服務(wù)引誘消費(fèi)者辦理預(yù)付卡,最終攜款潛逃。三是持卡人糾紛起訴時(shí)舉證難、維權(quán)成本高。通常消費(fèi)者在辦理預(yù)付卡過程中,只有消費(fèi)者和商家在場(chǎng),在商家攜款跑路后,消費(fèi)者很難取證,因此索賠困難。當(dāng)商家虛假宣傳或服務(wù)質(zhì)量名不符實(shí),消費(fèi)者需要通過第三方權(quán)威機(jī)構(gòu)投訴,這種方法耗時(shí)多且效率低。商業(yè)預(yù)付卡坑害消費(fèi)者事件,所涉人數(shù)多、范圍廣,消費(fèi)者權(quán)益受到極大損害。根據(jù)全國(guó)消協(xié)組織受理投訴統(tǒng)計(jì),2018年上半年,44 787件生活、服務(wù)類的投訴里絕大多數(shù)都是娛樂健身、美容美發(fā)、餐飲住宿等服務(wù)行業(yè)的預(yù)付式消費(fèi)。
當(dāng)前的預(yù)付卡管理方案存在的問題損害了消費(fèi)者的知悉真情權(quán)、安全保障權(quán)和公平交易權(quán)[3],對(duì)用戶來說是不公平的。因此,需要一種有效的方法來解決傳統(tǒng)預(yù)付卡方案中的公平性問題。區(qū)塊鏈技術(shù)的出現(xiàn)可以很好地解決這一問題。區(qū)塊鏈?zhǔn)且环N不可篡改和可追溯性的分布式超級(jí)賬本,提供分散和透明的數(shù)據(jù)共享,并按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以鏈?zhǔn)浇Y(jié)構(gòu)連接起來的數(shù)據(jù)結(jié)構(gòu)[4-7]。區(qū)塊鏈為智能合約提供支持,智能合約支持在沒有第三方的情況下進(jìn)行可信的交易[8],并按所觸發(fā)交易中的數(shù)據(jù)以規(guī)定的方式在網(wǎng)絡(luò)每個(gè)節(jié)點(diǎn)上自動(dòng)執(zhí)行。
本文主要利用區(qū)塊鏈去中心化、可驗(yàn)證和支持智能合約的特點(diǎn),保證消費(fèi)者和商家之間交易的公平性[9-10]:第一,商家通過區(qū)塊鏈發(fā)布一筆交易來創(chuàng)建智能合約,利用智能合約的暫存價(jià)值完成消費(fèi)者和商家之間資金流動(dòng);第二,通過區(qū)塊鏈記錄消費(fèi)者交易記錄,確保交易記錄的不可篡改性、可驗(yàn)證性和可追溯性。第三,若商家服務(wù)存在嚴(yán)重質(zhì)量問題或攜款跑路,消費(fèi)者可以通過申訴追回已支付的預(yù)付費(fèi),維護(hù)自己的權(quán)益,從而保證交易的公平性。本文的貢獻(xiàn)主要有:
(1)提出一種基于區(qū)塊鏈的預(yù)付卡管理方案,資金流動(dòng)全過程記錄在數(shù)據(jù)塊中,區(qū)塊鏈難以篡改的特性為預(yù)付卡消費(fèi)審核提供了保障。
(2)編寫和部署智能合約,實(shí)現(xiàn)預(yù)付卡的發(fā)售、購(gòu)買、消費(fèi)和結(jié)算。在發(fā)生糾紛時(shí),引入監(jiān)管機(jī)構(gòu)對(duì)商家進(jìn)行審計(jì),若商家出現(xiàn)違約行為,對(duì)商家進(jìn)行懲罰,沒收商家保證金,并將商家保證金和預(yù)付卡余額一起退還給消費(fèi)者。
(3)實(shí)驗(yàn)和安全性分析表明本文提出的預(yù)付卡管理方案的可行性和有效性。
傳統(tǒng)的預(yù)付卡業(yè)務(wù)流程通常只包括消費(fèi)者和商家兩類角色。消費(fèi)者根據(jù)商家推出的預(yù)付費(fèi)充值活動(dòng)(如充200送20,充300送35)選擇適合自己的預(yù)付費(fèi)活動(dòng),并繳納預(yù)付款給商家。商家收取消費(fèi)者預(yù)付款后為消費(fèi)者提供預(yù)付卡。消費(fèi)者憑卡到店消費(fèi),商家對(duì)本次消費(fèi)內(nèi)容進(jìn)行費(fèi)用結(jié)算。業(yè)務(wù)流程圖如圖1所示。
圖1 傳統(tǒng)預(yù)付卡業(yè)務(wù)流程圖Fig.1 Typical prepaid card business flow chart
傳統(tǒng)預(yù)付卡業(yè)務(wù)流程存在以下風(fēng)險(xiǎn):(1)消費(fèi)者購(gòu)買預(yù)付卡時(shí),只有消費(fèi)者和商家在場(chǎng),出現(xiàn)服務(wù)質(zhì)量和其他糾紛時(shí)消費(fèi)者很難取證。(2)消費(fèi)記錄以一種集中式的方式存儲(chǔ),并且只有商家才能訪問,消費(fèi)者不方便查看和驗(yàn)證。(3)消費(fèi)者的預(yù)付款直接進(jìn)入商家賬戶,一旦商家跑路,消費(fèi)者權(quán)益很難得到保障。
針對(duì)預(yù)付卡市場(chǎng)存在的風(fēng)險(xiǎn)問題,很多學(xué)者進(jìn)行了深入地研究,可劃分為法律法規(guī)建設(shè)、行業(yè)規(guī)范經(jīng)營(yíng)和職能部門監(jiān)管3類。預(yù)付卡法律法規(guī)的完善為消費(fèi)者的維權(quán)提供了法律支撐。我國(guó)商業(yè)預(yù)付卡規(guī)范條例主要有《關(guān)于規(guī)范商業(yè)預(yù)付卡管理的意見》《支付機(jī)構(gòu)預(yù)付卡業(yè)務(wù)管理辦法》《單用途商業(yè)預(yù)付卡管理辦法(試行)》以及《非金融機(jī)構(gòu)支付服務(wù)管理辦法》等四部法規(guī)。美國(guó)對(duì)預(yù)付卡消費(fèi)監(jiān)管框架主要由聯(lián)邦法律與州法律來規(guī)制。日本主要是由《預(yù)付式證票規(guī)制法》《保證金規(guī)制》兩部專業(yè)性法典對(duì)預(yù)付式交易進(jìn)行規(guī)范管理。在法律法規(guī)建設(shè)方面,國(guó)內(nèi)研究和國(guó)際上的作法,主要集中在彌補(bǔ)現(xiàn)有制度漏洞和法律依據(jù)漏洞[11],未從預(yù)付式消費(fèi)業(yè)務(wù)造成風(fēng)險(xiǎn)的根本特征來入手解決問題。
行業(yè)規(guī)范經(jīng)營(yíng)包括建立合同條款信息披露制度、企業(yè)經(jīng)營(yíng)信息報(bào)告制度、保證金制度和發(fā)揮行業(yè)協(xié)會(huì)的規(guī)制作用等多種手段。我國(guó)臺(tái)灣地區(qū)在2006年頒布實(shí)施的《零售業(yè)等商品(服務(wù))禮券定型化契約應(yīng)記載及不得記載事項(xiàng)》公告中明確了發(fā)行人需要對(duì)合同條款信息進(jìn)行披露。日本每年會(huì)對(duì)企業(yè)經(jīng)營(yíng)情況進(jìn)行公布,消費(fèi)者據(jù)此做出是否購(gòu)買或繼續(xù)使用該企業(yè)預(yù)付卡的決定。保證金制度是要求商家在預(yù)付卡發(fā)行之前交納一定的保證金存入銀行或者金融機(jī)構(gòu)開設(shè)的賬戶,當(dāng)商家違約時(shí),消費(fèi)者可以用經(jīng)營(yíng)者的保證金中優(yōu)先賠償[12]。在發(fā)揮行業(yè)協(xié)會(huì)的優(yōu)勢(shì)方面,日本《民法》專門規(guī)定了針對(duì)預(yù)付式證票的發(fā)行協(xié)會(huì)自律制度。但是行業(yè)規(guī)范經(jīng)營(yíng)僅限于部門監(jiān)督和商家自律管理,一旦商家倒閉關(guān)門或者攜款潛逃,監(jiān)管部門對(duì)違規(guī)商家大多只能采取警告、罰款、吊銷執(zhí)照等行政處罰手段,而無法有效地彌補(bǔ)消費(fèi)者損失。
職能部門監(jiān)管方面,目前的法律規(guī)定只是授權(quán)其對(duì)企業(yè)預(yù)付式消費(fèi)業(yè)務(wù)進(jìn)行監(jiān)測(cè)和備案,并未真正對(duì)其進(jìn)行全方位的業(yè)務(wù)管理司法授權(quán),多數(shù)為案件與糾紛處理的事后模式。查倩倩[13]提出我國(guó)對(duì)于單用途商業(yè)預(yù)付卡的監(jiān)管應(yīng)構(gòu)建以信用監(jiān)管為核心的事中事后監(jiān)管體系。王曉昕[14]提出了事中監(jiān)管模式,通過建立專項(xiàng)資金支付清算系統(tǒng),逐步實(shí)現(xiàn)商家預(yù)收款與居民預(yù)付行為的可視化與可控化,從而全面保護(hù)消費(fèi)者權(quán)益。但是可信第三方通常在現(xiàn)實(shí)生活中難以實(shí)現(xiàn),可能會(huì)為了利益私自挪用用戶資金或參與用戶共謀,而且基數(shù)龐大的商家也需投入大量監(jiān)管成本。
因此目前急需一種可去除中間機(jī)構(gòu)、實(shí)現(xiàn)預(yù)付費(fèi)合同自治,同時(shí)能保證交易公平的方案,而區(qū)塊鏈技術(shù)正好為這一方案的實(shí)現(xiàn)提供了技術(shù)支撐。
目前,國(guó)內(nèi)外許多專家學(xué)者對(duì)區(qū)塊鏈技術(shù)的應(yīng)用進(jìn)行了探索與研究。從行業(yè)分布來看,該技術(shù)主要應(yīng)用于在數(shù)字金融[15]、追溯防偽[16]、生物醫(yī)學(xué)[17]、安全監(jiān)管[18]、數(shù)據(jù)安全[19]和供應(yīng)鏈[20]等領(lǐng)域。鑒于上述領(lǐng)域的應(yīng)用在以往研究[7,21-22]中均有詳細(xì)描述,為節(jié)約篇幅,本章將簡(jiǎn)要介紹區(qū)塊鏈在物聯(lián)網(wǎng)、邊緣計(jì)算、人工智能、5G網(wǎng)絡(luò)等前沿應(yīng)用研究現(xiàn)狀。區(qū)塊鏈在物聯(lián)網(wǎng)領(lǐng)域應(yīng)用前景突出,廣泛應(yīng)用在車聯(lián)網(wǎng)[23]、智慧城市[24]、智能電網(wǎng)[25]等領(lǐng)域。例如Bao等[26]利用區(qū)塊鏈高效認(rèn)證和管理用戶標(biāo)識(shí),保護(hù)車載網(wǎng)車主的身份、位置、車輛信息等個(gè)人數(shù)據(jù)。針對(duì)邊緣計(jì)算中的安全隱私保護(hù)、資源管理等關(guān)鍵問題,武繼剛等[27]闡述了面向移動(dòng)邊緣計(jì)算的區(qū)塊鏈技術(shù)在數(shù)據(jù)安全、隱私保護(hù)、身份認(rèn)證、訪問控制、計(jì)算遷移和網(wǎng)絡(luò)管理方面的研究及應(yīng)用現(xiàn)狀。在人工智能領(lǐng)域,引入?yún)^(qū)塊鏈技術(shù)可以增強(qiáng)機(jī)器學(xué)習(xí)的數(shù)據(jù)安全、增加對(duì)機(jī)器人決策的信任、提高機(jī)器學(xué)習(xí)的效率[28]。方俊杰等[29]調(diào)研并回顧了目前較新的有關(guān)邊緣人工智能計(jì)算的區(qū)塊鏈研究,從基于區(qū)塊鏈的邊緣人工智能計(jì)算框架、基于區(qū)塊鏈的多智能體協(xié)作與決策增強(qiáng)、基于區(qū)塊鏈的邊緣人工智能計(jì)算安全性和可信性增強(qiáng),以及基于區(qū)塊鏈的邊緣人工智能計(jì)算信息共享等方面對(duì)面向邊緣人工智能計(jì)算的區(qū)塊鏈研究進(jìn)行了詳細(xì)的介紹。在5G領(lǐng)域,區(qū)塊鏈可用于5G基礎(chǔ)設(shè)施共享、網(wǎng)絡(luò)切片、海量物聯(lián)和高可靠低時(shí)延連接場(chǎng)景下設(shè)備管理與授權(quán)[30-31]。
智能合約作為產(chǎn)生于20世紀(jì)90年代的名詞,以區(qū)塊鏈技術(shù)為契機(jī),逐漸得到全球業(yè)界的重視[32]。一方面,區(qū)塊鏈的智能合約可以防范履約風(fēng)險(xiǎn),讓合同履行實(shí)現(xiàn)自治,無需政府部門等權(quán)威機(jī)構(gòu)來督促合約執(zhí)行。隨著區(qū)塊鏈的不斷發(fā)展,智能合約被應(yīng)用到農(nóng)業(yè)[33]、醫(yī)療[34]、食品[35]和保險(xiǎn)等多個(gè)行業(yè)。以航班延誤險(xiǎn)為例[36],如果航班延遲超過合同約定時(shí)間(如2 h),智能合約保險(xiǎn)產(chǎn)品就會(huì)自動(dòng)啟動(dòng)賠付流程,將賠付費(fèi)用直接存入乘客賬戶。智能合約技術(shù)提升了理賠效率,降低了騙保事件發(fā)生率。另一方面,區(qū)塊鏈在公平支付上的應(yīng)用也比較廣泛。聶夢(mèng)飛等[37]提出了基于以太坊區(qū)塊鏈的公平可搜索加密方案,解決了密文檢索中公平性問題。Zhao等[38]提出了基于區(qū)塊鏈技術(shù)的出版商與訂閱者之間公平方案,訂閱者通過提交押金來訂閱感興趣的主題,當(dāng)訂閱者將發(fā)布者上傳的加密內(nèi)容解密到區(qū)塊鏈時(shí),發(fā)布者將獲得抵押金。Wang等[39]提出了基于智能合約的物理資產(chǎn)交付的公平支付方案,實(shí)現(xiàn)了商家、消費(fèi)者和物流公司之間可靠和公平的支付。區(qū)塊鏈在預(yù)付卡市場(chǎng)應(yīng)用方面,2019年6月2日加密貨幣交易所運(yùn)營(yíng)商Paxful宣布將和區(qū)塊鏈技術(shù)公司The White Company合作推出比特幣預(yù)付卡。為解決預(yù)付費(fèi)卡余額浪費(fèi)問題,余額鏈通過區(qū)塊鏈建立統(tǒng)一通兌系統(tǒng),實(shí)現(xiàn)不同卡片殘值交換和兌換。但上述項(xiàng)目均沒有具體實(shí)現(xiàn)的細(xì)節(jié)。本文將詳細(xì)描述所提出的基于區(qū)塊鏈的預(yù)付卡方案的設(shè)計(jì)與實(shí)現(xiàn)。
區(qū)塊鏈的概念來自中本聰在2008年發(fā)表的論文Bitcoin:a peer-to-peer electronic cash system。通俗來講,區(qū)塊鏈?zhǔn)且粋€(gè)去中心化的、不可變的、共享的公共賬本,它是由附加區(qū)塊組成,附加區(qū)塊包括數(shù)據(jù)的所有事務(wù)和所有執(zhí)行結(jié)果。賬本采用區(qū)塊的形式存儲(chǔ),并以哈希散列值為索引構(gòu)成鏈狀結(jié)構(gòu),形成一個(gè)安全的、不可變的、防篡改的鏈。區(qū)塊結(jié)構(gòu)如圖2所示,每個(gè)區(qū)塊分為區(qū)塊頭和區(qū)塊體兩部分,區(qū)塊頭封裝了前一區(qū)塊哈希值、當(dāng)前區(qū)塊哈希值、Merkle樹和時(shí)間戳等信息,區(qū)塊頭包括當(dāng)前區(qū)塊的交易信息[40]。這些交易記錄由所有網(wǎng)絡(luò)節(jié)點(diǎn)維護(hù)。根據(jù)交易參與者的不同,區(qū)塊鏈可分為公有鏈、聯(lián)盟鏈和私有鏈[41]。
圖2 區(qū)塊結(jié)構(gòu)Fig.2 Structure of block
智能合約是傳統(tǒng)合同的數(shù)字化形式,它定義了參與者應(yīng)該遵守的規(guī)則[42]。智能合約的概念已經(jīng)被提出了20多年,直到區(qū)塊鏈的出現(xiàn),為智能合約的迅速發(fā)展提供了環(huán)境。區(qū)塊鏈去中心化、去信任和不可篡改性等特點(diǎn),使其成為智能合約天然的執(zhí)行平臺(tái)。目前大多數(shù)區(qū)塊鏈系統(tǒng),包括比特幣、以太坊[43]和超級(jí)賬本[44],都支持智能合約。從運(yùn)行環(huán)境的角度來說,智能合約可分為腳本類型和圖靈完備類型。
(1)比特幣系統(tǒng)通過編寫基于堆棧的操作碼來實(shí)現(xiàn)簡(jiǎn)單的交易邏輯,即比特幣腳本。
(2)以太坊提供一個(gè)基于圖靈完備語言的智能合約平臺(tái),也是首個(gè)圖靈完備的智能合約。以太坊系統(tǒng)提供了以太坊虛擬機(jī)EVM(Ethereum Virtual Machine),合約在EVM中運(yùn)行。以太坊用戶使用特定的語言編寫智能合約代碼,并將其編譯成EVM字節(jié)碼運(yùn)行。
(3)超級(jí)賬本提供另一種圖靈完備智能合約,一個(gè)無關(guān)與語言的智能合約,其中智能合約代碼可以用任何語言編寫,然后由編譯器編譯并打包成一個(gè)Docker鏡像,使用容器作為運(yùn)行環(huán)境。圖靈完備意味著任何操作邏輯都可以實(shí)現(xiàn)。
本文的預(yù)付卡管理智能合約是基于以太坊區(qū)塊鏈開發(fā)的,使用的智能合約都是基于圖靈完備的,智能合約提供了在區(qū)塊鏈上定義復(fù)雜邏輯的可能性,而區(qū)塊鏈環(huán)境確保了智能合約執(zhí)行結(jié)果的真實(shí)性和唯一性。目前以太坊上的分布式應(yīng)用已經(jīng)超過2 400個(gè)[45-46]。
本文基于區(qū)塊鏈智能合約,提出了一種去中心化的預(yù)付卡管理方案,消費(fèi)者和商家通過與智能合約交互完成交易,智能合約作為可信第三方進(jìn)行資金的轉(zhuǎn)移。同時(shí),引入商家保證金,用于防止商家中途終止服務(wù)協(xié)議。智能合約開發(fā)時(shí)寫入預(yù)付費(fèi)商品合同內(nèi)容,包括預(yù)付卡使用時(shí)間、地點(diǎn)、方式和結(jié)算方式。商家為消費(fèi)者提供服務(wù)后并通過智能合約驗(yàn)證,商家會(huì)得到本次服務(wù)的費(fèi)用結(jié)算。消費(fèi)者和商家按照智能合約中的規(guī)則執(zhí)行以達(dá)到雙贏目標(biāo)。消費(fèi)者的預(yù)付卡充值信息和消費(fèi)信息由礦工保存在區(qū)塊鏈系統(tǒng)中,而不是在一個(gè)中心服務(wù)器中,實(shí)現(xiàn)去中心化的目的。
如圖3所示,基于區(qū)塊鏈的公平預(yù)付卡管理方案包含四個(gè)角色:消費(fèi)者、商家、智能合約和監(jiān)管機(jī)構(gòu)。假設(shè)商家、消費(fèi)者和監(jiān)管機(jī)構(gòu)都可以向區(qū)塊鏈智能合約發(fā)送和接收消息,并且每個(gè)參與方都有一份自己的公私密鑰對(duì),能夠?qū)ψ约喊l(fā)送的內(nèi)容進(jìn)行簽名,確保交易內(nèi)容的唯一性和不可抵賴性。各角色的功能如下:
圖3 方案框架Fig.3 Architectural overview of Blockchain-based solution
商家:商家作為預(yù)付費(fèi)類產(chǎn)品或服務(wù)的賣家,提供店鋪正在經(jīng)營(yíng)銷售的商品,為每一個(gè)預(yù)付費(fèi)類商品創(chuàng)建智能合約,記錄商品的屬性和購(gòu)買信息。
消費(fèi)者:消費(fèi)者是預(yù)售類商品或服務(wù)的買家,他們可以根據(jù)自身需要選擇合適的預(yù)售類商品或服務(wù)(如次卡、月卡、年卡),在購(gòu)買時(shí)可以與商家進(jìn)行詳細(xì)地溝通,充分了解產(chǎn)品功能。
智能合約:智能合約可以讀寫存儲(chǔ)的文件,給其他用戶或智能合約發(fā)送消息,還可以在合約賬戶中存放押金、預(yù)付款或發(fā)送給其他用戶。
監(jiān)管機(jī)構(gòu):監(jiān)管機(jī)構(gòu)監(jiān)管整個(gè)網(wǎng)絡(luò)。對(duì)加入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn)行身份認(rèn)證,對(duì)鏈外交易過程中產(chǎn)生的糾紛進(jìn)行核實(shí),對(duì)不誠(chéng)實(shí)的一方進(jìn)行懲罰。因此,監(jiān)管機(jī)構(gòu)必須得到所有人的信任。
基于區(qū)塊鏈的公平預(yù)付卡管理方案包括四個(gè)階段,主要執(zhí)行過程如下:
第一階段,發(fā)售預(yù)付卡。消費(fèi)者根據(jù)商家推出的預(yù)付費(fèi)消費(fèi)活動(dòng)選擇預(yù)付卡種類,商家根據(jù)消費(fèi)者選擇的預(yù)付卡在區(qū)塊鏈上部署預(yù)付款商品或服務(wù)的智能合約(圖3中a1)。消費(fèi)者對(duì)智能合約條款進(jìn)行驗(yàn)證后存入購(gòu)買預(yù)付卡的錢(圖3中a2和a3)。為防止商家中途終止服務(wù)協(xié)議,商家向智能合約繳納保證金(圖3中a4)。商家為消費(fèi)者分配預(yù)付卡編號(hào),作為消費(fèi)憑證,智能合約將預(yù)付卡編號(hào)提供給消費(fèi)者(圖3中a5)。
第二階段,使用預(yù)付卡。消費(fèi)者憑預(yù)付卡在商家店面進(jìn)行消費(fèi)(圖3中b1),商家為消費(fèi)者提供服務(wù)或商品,根據(jù)本次服務(wù)內(nèi)容,生成消費(fèi)清單并上傳至智能合約。智能合約根據(jù)消費(fèi)清單進(jìn)行費(fèi)用結(jié)算,從消費(fèi)者預(yù)付卡余額中扣除本次消費(fèi)清單總金額,再將本次消費(fèi)清單總金額轉(zhuǎn)至商家(圖3中b2)。
第三階段,清空預(yù)付卡。沒有服務(wù)質(zhì)量及其他糾紛情況,消費(fèi)者預(yù)付卡余額為零,本次消費(fèi)活動(dòng)結(jié)束,智能合約將商家保證金退還給商家(圖3中c1)。
第四階段,爭(zhēng)端解決。消費(fèi)者發(fā)現(xiàn)商品或服務(wù)存在問題,第一種情況是消費(fèi)者與商家進(jìn)行交涉后達(dá)成一致,商家同意退款,智能合約將預(yù)付卡余額轉(zhuǎn)至消費(fèi)者賬戶。第二種情況是消費(fèi)者和商家未達(dá)成一致,如商家卷款跑路,消費(fèi)者提出申訴(圖3中d1)。智能合約向監(jiān)管機(jī)構(gòu)發(fā)核實(shí)請(qǐng)求(圖3中d2)。監(jiān)管機(jī)構(gòu)進(jìn)行線下核實(shí)商家經(jīng)營(yíng),并根據(jù)商家經(jīng)營(yíng)情況對(duì)申訴確認(rèn)(圖3中d3和d4)。若商家確實(shí)存在違約行為,智能合約沒收商家保證金作為懲罰,并將商家保證金和預(yù)付卡余額轉(zhuǎn)移至消費(fèi)者賬戶。
3.2.1 發(fā)售預(yù)付卡
預(yù)付卡由商家進(jìn)行發(fā)售,如圖4所示。
圖4 發(fā)售預(yù)付卡的流程圖Fig.4 Flowchart for selling prepaid card
商家發(fā)布具體的預(yù)付卡種類,消費(fèi)者根據(jù)自身需要選擇預(yù)付卡。商家為消費(fèi)者選定的預(yù)付卡創(chuàng)建智能合約,合約中包括商家編號(hào)、消費(fèi)者編號(hào)、預(yù)付卡總金額、使用范圍、有效日期及有關(guān)說明。智能合約創(chuàng)建后觸發(fā)事件通知消費(fèi)者。消費(fèi)者對(duì)合約條款進(jìn)行驗(yàn)證,驗(yàn)證成功后存入預(yù)付卡標(biāo)定款項(xiàng)。商家存入一定數(shù)額的保證金后為消費(fèi)者分配預(yù)付卡編號(hào)。智能合約將編號(hào)提供給消費(fèi)者。
3.2.2 使用預(yù)付卡
消費(fèi)者使用預(yù)付卡的流程如圖5所示。消費(fèi)者到商家店面進(jìn)行消費(fèi),商家為消費(fèi)者提供預(yù)付費(fèi)服務(wù)或商品,生成本次消費(fèi)清單。消費(fèi)清單包括商家編號(hào)、預(yù)付卡編號(hào)、時(shí)間、服務(wù)品類、數(shù)量、價(jià)格、折扣等。首先消費(fèi)者對(duì)消費(fèi)清單進(jìn)行確認(rèn),然后商家驗(yàn)證本次消費(fèi),消費(fèi)驗(yàn)證成功后智能合約自動(dòng)進(jìn)行費(fèi)用結(jié)算,從消費(fèi)者預(yù)付卡余額中扣除清單金額并轉(zhuǎn)至商家賬戶。費(fèi)用結(jié)算成功后通知商家。消費(fèi)者也可以通過智能合約查詢預(yù)付卡余額。
圖5 使用預(yù)付卡的流程圖Fig.5 Flowchart for using prepaid card
3.2.3 清空預(yù)付卡
清空預(yù)付卡的流程如圖6所示。沒有服務(wù)質(zhì)量及其他糾紛的情況下,預(yù)付卡金額消費(fèi)完畢,智能合約退還商家保證金給商家并通知消費(fèi)者本次活動(dòng)結(jié)束。
圖6 清空預(yù)付卡的流程圖Fig.6 Flowchart for emptying prepaid card
3.2.4 爭(zhēng)端解決
爭(zhēng)端解決分為兩種情況,一是消費(fèi)者發(fā)現(xiàn)商品或服務(wù)存在問題,現(xiàn)場(chǎng)交涉,商家和消費(fèi)者達(dá)成一致,商家同意退款。消費(fèi)者發(fā)起退款申請(qǐng),商家確認(rèn)退款申請(qǐng)后智能合約將預(yù)付卡余額轉(zhuǎn)至消費(fèi)者賬戶,將商家保證金退還給商家賬戶,如圖7所示。情況二是消費(fèi)者發(fā)現(xiàn)商家嚴(yán)重違反服務(wù)條約時(shí),未能與商家達(dá)成一致,消費(fèi)者提出申訴。智能合約向監(jiān)管機(jī)構(gòu)發(fā)出核實(shí)商家經(jīng)營(yíng)情況的請(qǐng)求。監(jiān)管機(jī)構(gòu)進(jìn)行線下查訪核實(shí)商家情況后,對(duì)消費(fèi)者申訴請(qǐng)求進(jìn)行確認(rèn)。若商家確實(shí)存在違約行為,智能合約將預(yù)付卡余額轉(zhuǎn)至消費(fèi)者賬戶,同時(shí)為懲罰違約商家,商家保證金也轉(zhuǎn)入消費(fèi)者賬戶,如圖8所示。
圖7 商家給消費(fèi)者退款流程圖Fig.7 Flowchart of refund from merchant to consumer
圖8 平臺(tái)給消費(fèi)者退款流程圖Fig.8 Flowchart of refund from platform to consumer
本節(jié)詳細(xì)介紹智能合約中商家、消費(fèi)者和監(jiān)管機(jī)構(gòu)用于預(yù)付卡管理的功能。該智能合約中各主要函數(shù)功能詳述如下:
(1)createAgreementContract(),創(chuàng)建智能合約的函數(shù),只能由商家調(diào)用。當(dāng)消費(fèi)者在線下選定商家提供的預(yù)付卡商品后,商家在區(qū)塊鏈上發(fā)布一筆交易來創(chuàng)建智能合約。
(2)verifyContract(),消費(fèi)者驗(yàn)證智能合約條款的函數(shù),只能由消費(fèi)者調(diào)用。消費(fèi)者獲取智能合約狀態(tài),若合約已經(jīng)創(chuàng)建并等待消費(fèi)者確認(rèn),消費(fèi)者驗(yàn)證合約條款后發(fā)送合約已被驗(yàn)證和同意的消息。若合約上無相應(yīng)條款,將合約狀態(tài)設(shè)為中止?fàn)顟B(tài),調(diào)用合約中止的函數(shù),同時(shí)發(fā)送合約未簽訂消息。
(3)depositEtherToBuyCard(),消費(fèi)者購(gòu)買預(yù)付卡的合約函數(shù),只能由消費(fèi)者執(zhí)行。消費(fèi)者向智能合約支付購(gòu)買預(yù)付卡費(fèi)用,智能合約把費(fèi)用進(jìn)行暫存。
(4)depositCollateral(),商家繳納保證金的函數(shù),只能由商家執(zhí)行。為防止商家中途終止服務(wù)協(xié)議,商家在分配預(yù)付卡編號(hào)之前,通過該函數(shù)向智能合約繳納保證金。
(5)provideHashANDToken(),商家為消費(fèi)者分配卡號(hào),只能由商家執(zhí)行。當(dāng)消費(fèi)者已經(jīng)存入購(gòu)買預(yù)付卡的錢,同時(shí)商家也繳納保證金后,商家為消費(fèi)者生成預(yù)付卡編號(hào)當(dāng)作消費(fèi)的憑證。
(6)consumeByCard(),消費(fèi)者憑卡進(jìn)行消費(fèi)的函數(shù),只能由消費(fèi)者執(zhí)行。當(dāng)消費(fèi)者收到預(yù)付卡憑證后,憑卡進(jìn)行消費(fèi)。若消費(fèi)次數(shù)已達(dá)上限,設(shè)置消費(fèi)者狀態(tài)為完成所有消費(fèi),退還商家保證金并提醒消費(fèi)者進(jìn)行現(xiàn)金支付。若消費(fèi)次數(shù)未用完,消費(fèi)者成功完成本次消費(fèi)。
(7)verifyConsume(),商家對(duì)消費(fèi)者消費(fèi)進(jìn)行確認(rèn),只能由商家調(diào)用。首先判斷消費(fèi)者預(yù)付卡編號(hào)是否存在,若不存在返回消費(fèi)者需現(xiàn)場(chǎng)付款的消息。若預(yù)付卡編號(hào)存在再判斷該消費(fèi)者預(yù)付卡消費(fèi)次數(shù)是否用完。若消費(fèi)次數(shù)已到上限,告知消費(fèi)者需現(xiàn)場(chǎng)支付本次服務(wù)賬單。若消費(fèi)次數(shù)未用完,且消費(fèi)者已經(jīng)對(duì)本次消費(fèi)進(jìn)行確認(rèn),就調(diào)用費(fèi)用結(jié)算函數(shù),智能合約自動(dòng)從消費(fèi)者預(yù)付卡總金額里扣除本次消費(fèi)金額,并將其劃撥給商家。
(8)refundFine(),商家保證金退款函數(shù),只能由智能合約內(nèi)部調(diào)用。當(dāng)消費(fèi)者已經(jīng)消費(fèi)完所有預(yù)付卡次數(shù)時(shí),智能合約將自動(dòng)把商家保證金退還給商家。
(9)爭(zhēng)議解決。爭(zhēng)議分為兩種情況,一種情況是商家同意退款,智能合約將預(yù)付卡余額轉(zhuǎn)移到消費(fèi)者賬戶,商家保證金退回給商家賬戶。另一種情況是商家中途退出或出現(xiàn)違約行為,消費(fèi)者進(jìn)行申訴,經(jīng)監(jiān)管機(jī)構(gòu)確認(rèn)核實(shí)后智能合約將預(yù)付卡余額和商家保證金都轉(zhuǎn)至消費(fèi)者賬戶。
以太坊是一個(gè)基于區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)的、可實(shí)現(xiàn)智能合約的、開源的底層系統(tǒng)。在以太坊體系中,一個(gè)合約就是一個(gè)存在區(qū)塊鏈里的程序。以太坊虛擬機(jī)可以執(zhí)行編寫的以太坊合約,允許用戶使用測(cè)試區(qū)塊鏈進(jìn)行智能合約的測(cè)試。本文基于以太坊區(qū)塊鏈實(shí)驗(yàn)環(huán)境,實(shí)現(xiàn)了一個(gè)預(yù)付卡智能合約。
預(yù)付卡智能合約的實(shí)現(xiàn)分為三個(gè)部分:合約編譯、合約部署和合約驗(yàn)證。
(1)合約編譯。本文智能合約使用Solidity語言編寫的,并在以太坊環(huán)境下使用官方推薦的IDE-Remix上對(duì)智能合約進(jìn)行實(shí)驗(yàn)測(cè)試,內(nèi)核版本為1.0.4。編譯結(jié)果如圖9所示。
圖9 預(yù)付卡智能合約的編譯Fig.9 Compilation of smart contracts
(2)合約部署。經(jīng)過IDE-Remix編譯可驗(yàn)證智能合約是否具備正確性,并將其部署在區(qū)塊鏈上,如圖10所示。
圖10 預(yù)付卡智能合約的部署Fig.10 Deployment of smart contracts
(3)合約測(cè)試。Remix為智能合約提供了一個(gè)區(qū)塊鏈測(cè)試環(huán)境,測(cè)試環(huán)境會(huì)默認(rèn)提供多個(gè)賬戶,且賬戶中有少量以太幣用于調(diào)用函數(shù)測(cè)試交易。在本次測(cè)試中,預(yù)付卡智能合約各參與方的以太坊地址如下:
在本節(jié)中將重點(diǎn)測(cè)試通過以太坊智能合約在系統(tǒng)參與者之間的正確交互和功能。對(duì)智能合約進(jìn)行了3種不同場(chǎng)景的測(cè)試。測(cè)試用例1測(cè)試了一個(gè)成功的消費(fèi)場(chǎng)景。測(cè)試用例2測(cè)試了商家給消費(fèi)者退款的場(chǎng)景。測(cè)試用例3測(cè)試了消費(fèi)者與商家之間產(chǎn)生爭(zhēng)議,仲裁者進(jìn)行調(diào)解爭(zhēng)議的場(chǎng)景。為簡(jiǎn)化測(cè)試,預(yù)付卡的充值金額設(shè)為10以太,商家保證金為1以太。對(duì)智能合約的測(cè)試確保了所有函數(shù)修改器按預(yù)期工作,合約流程根據(jù)合約狀態(tài)遵循正確的順序,所有以太的存取按預(yù)期執(zhí)行。商家創(chuàng)建一個(gè)智能合約并調(diào)用事件ContractCreated。只有當(dāng)消費(fèi)者的合同條款驗(yàn)證結(jié)果為“真”時(shí),事務(wù)才會(huì)成功并轉(zhuǎn)移到下一個(gè)狀態(tài)。否則,事務(wù)將中止,合同自毀。
測(cè)試用例1成功消費(fèi)
首先測(cè)試一個(gè)預(yù)付卡成功消費(fèi)的場(chǎng)景。圖11顯示消費(fèi)者1提交了以太幣購(gòu)買預(yù)付卡。觸發(fā)DepositMoney-Done事件,消費(fèi)者等待商家分配唯一預(yù)付卡消費(fèi)憑證。
圖11 調(diào)用DepositEtherToBuyCard函數(shù)后的日志Fig.11 Log after calling DepositEtherToBuyCard function
如圖12所示,合約創(chuàng)建者(即商家)向消費(fèi)者1提供了預(yù)付卡的MD5哈?!?121769d20dda4884aa247f2649-b9d8f”和唯一的預(yù)付卡消費(fèi)憑證“0xad6a01fd72cb61d4-630ddc3ab4c60e2cd95c590e49b727d2cde34a17d6e18b32”。
圖12 觸發(fā)MD5HashANDTokenProvidedToCustomer事件的日志Fig.12 Logs showing event MD5HashANDTokenProvidedToCustomer triggered
消費(fèi)者1使用函數(shù)consumeByCard()來進(jìn)行消費(fèi)并保存消費(fèi)結(jié)果。商家必須驗(yàn)證消費(fèi)結(jié)果。只有當(dāng)商家verifyConsume()和consumeByCard()的結(jié)果都為真時(shí),才觸發(fā)ConsumeSuccess和PaymentSettled事件,并自動(dòng)調(diào)用settlePayment()函數(shù)將顧客本次消費(fèi)金額結(jié)算給商家,如圖13所示。
圖13 觸發(fā)ConsumeSuccess和PaymentSettled的日志Fig.13 Events ConsumeSuccess and PaymentSettled triggered
測(cè)試用例2商家給消費(fèi)者退款
然后使用消費(fèi)者2來測(cè)試商家給消費(fèi)者退款的場(chǎng)景。如圖14所示,消費(fèi)者2存入以太幣后等待分配預(yù)付卡哈希和消費(fèi)憑證。
圖14 觸發(fā)DepositMoneyDone事件的日志Fig.14 Logs showing event DepositMoneyDone triggered
商家為消費(fèi)者2提供預(yù)付卡哈希和唯一的消費(fèi)憑證,如圖15所示。生成的消費(fèi)憑證對(duì)于每個(gè)存入以太幣的客戶都是唯一的。
圖15 觸發(fā)MD5HashANDTokenProvidedToCustomer事件的日志Fig.15 Logs showing event MD5HashANDTokenProvidedToCustomer triggered
若消費(fèi)者因搬家或其他任何原因,不想再使用預(yù)付卡時(shí),可與商家進(jìn)行協(xié)商退款。消費(fèi)者2通過applyBanance()函數(shù)向商家提出退款申請(qǐng)。商家通過refundBanance()函數(shù)處理退款申請(qǐng)。若商家同意退款,智能合約將預(yù)付卡余額退還給消費(fèi)者賬戶,商家保證金退還給商家賬戶。圖16為購(gòu)買預(yù)付卡后商家和消費(fèi)者2賬戶金額,圖17為完成退款后商家和消費(fèi)者2賬戶金額。
圖16 充值后各參與方賬戶金額Fig.16 Account amount of each participant after recharging
圖17 退款后各參與方賬戶金額Fig.17 Account amount of each participant after refund
測(cè)試用例3爭(zhēng)端解決
最后使用消費(fèi)者1來測(cè)試智能合約中的爭(zhēng)議場(chǎng)景。消費(fèi)者1存入了以太幣后獲得預(yù)付卡編號(hào)。當(dāng)消費(fèi)者發(fā)現(xiàn)商家存在違約行為時(shí),可通過appeal()函數(shù)向智能合約提出申訴,消費(fèi)者狀態(tài)被設(shè)置為爭(zhēng)議狀態(tài)并觸發(fā)appealByCustomer事件,如圖18所示。
圖18 觸發(fā)appealByCustomer事件的日志Fig.18 Logs showing event appealByCustomer triggered
監(jiān)管機(jī)構(gòu)調(diào)用MediationDispute()對(duì)申訴進(jìn)行處理,當(dāng)申訴為真時(shí)將預(yù)付卡余額和商家保證金都轉(zhuǎn)給消費(fèi)者,并觸發(fā)disputeResult事件,如圖19所示。
圖19 觸發(fā)disputeResult事件的日志Fig.19 Logs showing event disputeResult triggered
智能合約每一個(gè)被執(zhí)行的命令都有一個(gè)特定的消耗,用單位gas計(jì)數(shù)。在進(jìn)行實(shí)驗(yàn)時(shí),1 gas=1 Gwei,1 Gwei=10-9ether,1 ether=211.99 USD。通過實(shí)驗(yàn)測(cè)試執(zhí)行智能合約所消耗的成本,結(jié)果如表1所列。從表1中可以看出,用戶調(diào)用智能合約提供的函數(shù)接口,消耗的成本很低,所有的操作消耗的gas成本在可接受范圍內(nèi),同時(shí)方案能保證商家與消費(fèi)者交易的公平性及雙方交易的透明度,因此方案是可行的。
表1 智能合約成本測(cè)試Table 1 Smart contract cost
上述智能合約的實(shí)驗(yàn)結(jié)果可以看出,該智能合約很好地完成預(yù)付卡交易中預(yù)付卡發(fā)售、消費(fèi)者消費(fèi)、商家結(jié)算、爭(zhēng)議投訴等功能,并且實(shí)驗(yàn)驗(yàn)證了智能合約的有效性和可行性。以區(qū)塊鏈網(wǎng)絡(luò)為載體,本文所提的預(yù)付卡方案杜絕了商家攜款跑路的可能性,提高了消費(fèi)者消費(fèi)的安全性,可廣泛應(yīng)用于預(yù)付費(fèi)消費(fèi)業(yè)務(wù)領(lǐng)域。
(1)交易的公平性。在傳統(tǒng)預(yù)付卡管理方案中認(rèn)為商家會(huì)誠(chéng)實(shí)地完成預(yù)付卡交易并為用戶提供優(yōu)質(zhì)的服務(wù)。但是商家可能是惡意的,它在收到消費(fèi)者的預(yù)付款后忽然關(guān)門或提供有問題質(zhì)量的商品,導(dǎo)致消費(fèi)者不能得到相應(yīng)的服務(wù)。在本方案中,消費(fèi)者首先把預(yù)付款暫存在智能合約上,商家在為消費(fèi)者提供服務(wù)后,向智能合約提交本次消費(fèi)清單,智能合約根據(jù)消費(fèi)清單只結(jié)算本次服務(wù)費(fèi)用。因此,為獲取消費(fèi)者后續(xù)的預(yù)付款,商家會(huì)為消費(fèi)者提供高質(zhì)量的商品或服務(wù)。
同時(shí),為防止商家中途率先中止服務(wù),商家需繳納保證金,由智能合約暫存。若商家誠(chéng)實(shí)地完成了本次預(yù)付卡消費(fèi)活動(dòng),智能合約退回商家的押金,否則,這筆保證金歸消費(fèi)者所有。智能合約可以根據(jù)預(yù)設(shè)的條件自動(dòng)執(zhí)行協(xié)議,方案保障了預(yù)付卡交易的公平性。
(2)交易的可審計(jì)性。區(qū)塊鏈的公共歷史使得參與者不可能否認(rèn)他們的行為。以太坊中使用了ECDSAsecp256k1簽名算法,所有與以太坊地址相關(guān)事務(wù)都將被簽名。只要標(biāo)準(zhǔn)簽名方案受到保護(hù),惡意行為就不能被否認(rèn),因?yàn)楹灻遣荒軅卧斓?。因此由不誠(chéng)實(shí)的人作弊是不太可能成功的。
(3)系統(tǒng)的健壯性。部署在區(qū)塊鏈上的智能合約為參與者執(zhí)行事務(wù)提供了可用性。此外,所有交易都以分布式的方式記錄和存儲(chǔ)在以太坊公共賬本上,并且不受失敗、黑客攻擊或妥協(xié)的影響。以太坊具有很強(qiáng)的魯棒性和抵御分布式拒絕服務(wù)攻擊的能力,因?yàn)樗怯扇虺汕先f的計(jì)算機(jī)節(jié)點(diǎn)組成,這些節(jié)點(diǎn)承載了具有高度完整性和一致性的重復(fù)記錄與數(shù)據(jù)。
本文提出一種基于區(qū)塊鏈的公平預(yù)付卡管理方案,解決了傳統(tǒng)預(yù)付卡方案的公平性問題,既考慮到了如果商家違約,那么它不僅不能得到消費(fèi)者預(yù)付款項(xiàng),還會(huì)受到懲罰;如果商家誠(chéng)實(shí)地為用戶提供了預(yù)付費(fèi)服務(wù),商家將得到全部的消費(fèi)者預(yù)付款,同時(shí)擁有穩(wěn)定的消費(fèi)者資源,確保有持續(xù)的收入。另外,本方案保證了在預(yù)付卡交易過程中雙方交易的可靠性和透明度。最后對(duì)方案的安全性和性能進(jìn)行了分析,證明方案是可行的。后續(xù)工作考慮對(duì)預(yù)付卡方案進(jìn)一步優(yōu)化,如增加消費(fèi)者評(píng)價(jià)和商家信譽(yù),從而提高消費(fèi)者買到高質(zhì)量的預(yù)付卡產(chǎn)品的比率。