陳煥新,李愛萍
太原理工大學(xué) 信息與計(jì)算機(jī)學(xué)院,山西 晉中 030600
在商業(yè)交易中,交易雙方對交易內(nèi)容的認(rèn)可需要通過合同形成各種存證,如保險(xiǎn)合同、銀行存單等,雙方互信建立在書面簽名、多重備份、分散保存等基礎(chǔ)上,即將經(jīng)雙方確認(rèn)符合自身利益的合同相互交換簽署,從而實(shí)現(xiàn)對其利益的保障。隨著數(shù)字化技術(shù)的發(fā)展,交易存證也在逐漸實(shí)現(xiàn)電子化,以順應(yīng)信息技術(shù)和大數(shù)據(jù)潮流,同時(shí)提高合同存證的管理效率和利用價(jià)值。
交易存證數(shù)字化后,交易雙方通過PKI/CA體系的RSA簽名機(jī)制和哈希摘要對合同內(nèi)容進(jìn)行簽名,為合同的合理性背書,在此基礎(chǔ)上,針對數(shù)字合同的公平合同簽署協(xié)議(fair contract signing protocol,F(xiàn)CSP)將是保證合同公平進(jìn)行的必要條件。公平合同簽署是指雙方在網(wǎng)絡(luò)中發(fā)送帶有自身數(shù)字簽名的合同,簽名可由對方進(jìn)行驗(yàn)證,同時(shí)如果合同內(nèi)容侵犯了某一方的利益,則停止執(zhí)行,并且回滾到初始狀態(tài),以避免任何一方的損失,保證了合同內(nèi)容的公平性。因此,合同成功運(yùn)行則代表雙方對合同內(nèi)容的共同認(rèn)可,而合同異常終止也不會(huì)使任何一方形成損失,同時(shí)交易雙方無法否認(rèn)自己應(yīng)負(fù)的責(zé)任,形成了線上合同的公平。公平合同簽署協(xié)議可以分為有可信第三方(trusted third party,TTP)和無可信第三方兩種模式,前者是一種傳統(tǒng)的中心化管理方式[1],而后者則是一種去中心化的管理方式[2],其中有TTP模式要求第三方必須嚴(yán)格中立,一旦第三方不可信,將會(huì)對交易其中一方造成損失,從公平角度看,無TTP模式要比有TTP模式更有優(yōu)勢,然而直到區(qū)塊鏈出現(xiàn)之前,F(xiàn)CSP也沒有建立出無TTP模式。
以去中心化、不可篡改為核心特色的區(qū)塊鏈,是一種特殊的電子交易系統(tǒng),所有交易及數(shù)據(jù)往來都是以電子形式通過P2P網(wǎng)絡(luò)進(jìn)行傳遞、存儲(chǔ)[3],所有用戶可進(jìn)行私密交易,保證交易的完全匿名性,同時(shí)所有交易在區(qū)塊鏈上存儲(chǔ),形成數(shù)據(jù)的不可否認(rèn)性。其去中心化的特性正好順應(yīng)FCSP的無TTP需求,相較于以往的傳統(tǒng)電子交易,去中心化的分布式存儲(chǔ)提升了私自修改數(shù)據(jù)的代價(jià),同時(shí)鏈上節(jié)點(diǎn)的每一次交易都會(huì)記錄在鏈上,大大提升了交易的可信度[4]。
然而,當(dāng)前區(qū)塊鏈的信任模式還是單向信任,即交易的發(fā)起方對接收方只有利益的輸送,而沒有確認(rèn)接收方應(yīng)負(fù)的責(zé)任。以比特幣支付為例,在單向信任模式中,接收方可以信任發(fā)起方的支付行為,而發(fā)起方卻無法信任接收方的履約行為,當(dāng)發(fā)起方發(fā)送交易后,接收方獲取利益,卻有可能以沒有責(zé)任約定故意不履行合約,使發(fā)起方承受巨大損失,這種情況在現(xiàn)實(shí)中并不少見。因此,區(qū)塊鏈亟待建立起能保障公平性的雙向信任模式,即通過約定利益和責(zé)任,通過網(wǎng)絡(luò)發(fā)送經(jīng)過己方簽名的合同,在接受利益的同時(shí)也接受責(zé)任,使交易雙方達(dá)成交易互信。當(dāng)前逐漸興起的針對雙向信任的研究指出,可以通過多種措施形成雙向公平,從而更好地促進(jìn)區(qū)塊鏈在某些重點(diǎn)行業(yè)的落地推廣[4],然而這些措施均存在各種各樣的缺陷。本文的貢獻(xiàn)主要有以下兩點(diǎn):一是針對現(xiàn)有公平合同簽署協(xié)議的缺陷,在Fabric區(qū)塊鏈中對其進(jìn)行了改進(jìn),形成交易主體的順序簽名、統(tǒng)一驗(yàn)證,在保證雙向信任的同時(shí)提升了交易確認(rèn)速度;二是設(shè)計(jì)了車險(xiǎn)區(qū)塊鏈架構(gòu),并在車險(xiǎn)環(huán)境下驗(yàn)證上述雙向信任保險(xiǎn)區(qū)塊鏈的公平性和性能。
區(qū)塊鏈最初被一種非常有名的加密貨幣——比特幣采用,能夠記錄跨計(jì)算機(jī)的操作,并以分散的方式存儲(chǔ),從而形成一個(gè)不可變的數(shù)字分布式分類賬[5]。帳本分布在所有節(jié)點(diǎn)中,每個(gè)節(jié)點(diǎn)都有賬本的副本。每個(gè)事務(wù)以塊的形式存儲(chǔ),被組織成線性序列,形成一個(gè)鏈條。區(qū)塊鏈的每一個(gè)塊都包含前一個(gè)塊的哈希值,一旦塊被加到鏈條末端并且被共識(shí),那么任何人都不能刪除或者修改這個(gè)塊,在比特幣使用的區(qū)塊鏈中,每個(gè)塊對所有成員可見[6]。
Fabric聯(lián)盟鏈由IBM提出,適用于在大規(guī)模網(wǎng)絡(luò)上運(yùn)行分布式應(yīng)用程序,最大優(yōu)勢是性能開銷較小和機(jī)密性較好[7]。從性能開銷角度考慮:其他區(qū)塊鏈結(jié)構(gòu)中,共識(shí)被廣泛接受,但在區(qū)塊鏈網(wǎng)絡(luò)中以對等方式順序執(zhí)行事務(wù),嚴(yán)重降低區(qū)塊鏈性能。而在Fabric中通過指定背書節(jié)點(diǎn)和共識(shí)節(jié)點(diǎn),背書節(jié)點(diǎn)模擬執(zhí)行交易并簽名,交由有限的共識(shí)節(jié)點(diǎn)進(jìn)行共識(shí)并打包成塊,提高了效率,避免了不必要的性能開銷。相同條件下,相較于以太坊聯(lián)盟鏈,F(xiàn)abric聯(lián)盟鏈在吞吐量和事務(wù)延遲等方面有更好的性能[8]。從機(jī)密性角度考慮,此前的區(qū)塊鏈結(jié)構(gòu)中允許任何一方查看鏈塊,不符合商業(yè)應(yīng)用中保密性的要求,而Fabric通過引入成員關(guān)系服務(wù)提供者(membership service provider,Msp)審核機(jī)制和通道技術(shù)在一定程度上實(shí)現(xiàn)了機(jī)密性,其中Msp機(jī)制通過身份驗(yàn)證和簽名管理建立了節(jié)點(diǎn)加入?yún)^(qū)塊鏈的門檻,通道技術(shù)通過保證各通道節(jié)點(diǎn)及節(jié)點(diǎn)間的交易獨(dú)立性實(shí)現(xiàn)隱私性[7]。在Fabric中,節(jié)點(diǎn)的加入都要通過審核[9],同時(shí)每個(gè)交易環(huán)境都在一個(gè)通道中發(fā)生,每一個(gè)通道生成各自的區(qū)塊鏈,只有本通道內(nèi)的節(jié)點(diǎn)才可以查看區(qū)塊信息。
智能合約也稱為加密合約,是一種計(jì)算機(jī)程序,用于依據(jù)某種規(guī)則在各方之間轉(zhuǎn)移資產(chǎn)或數(shù)字貨幣,允許互不信任的主體進(jìn)行交易[8]。Fabric提供的智能合約叫作chaincode,即鏈碼,使用Docker容器來運(yùn)行智能合約,基于Docker提供的隔離性和安全性來實(shí)現(xiàn)宿主主機(jī)的安全性[10]。智能合約可基于Go和Java高級語言開發(fā),這些語言不但圖靈完備、技術(shù)成熟,可降低合約開發(fā)者的學(xué)習(xí)門檻。同時(shí)區(qū)塊鏈本身的特性,使得智能合約保存在區(qū)塊鏈中,保證其不可篡改性[11]。
信息不對稱是當(dāng)前保險(xiǎn)行業(yè)的顯著特點(diǎn)[12],主要包括兩個(gè)方面,一是保險(xiǎn)公司的條款制定和執(zhí)行對于被保險(xiǎn)人來說是陌生領(lǐng)域,保險(xiǎn)公司可能會(huì)設(shè)置一些漏洞來欺瞞被保險(xiǎn)人;二是被保險(xiǎn)人利用信息的不同步、不透明等特點(diǎn),利用時(shí)間差、造假等方式,惡意騙取賠付。因此,在區(qū)塊鏈出現(xiàn)不久即產(chǎn)生了將該技術(shù)應(yīng)用于保險(xiǎn)行業(yè)的呼聲,多位學(xué)者提出了將區(qū)塊鏈應(yīng)用在保險(xiǎn)行業(yè)中的可行性和必要性[13-14],然而并沒有對區(qū)塊鏈如何應(yīng)用在保險(xiǎn)行業(yè)中進(jìn)行進(jìn)一步的研究。
基于區(qū)塊鏈技術(shù)的公平合同簽署協(xié)議發(fā)展有以下幾個(gè)階段:一是基于原始區(qū)塊鏈有TTP的實(shí)現(xiàn),二是基于原始區(qū)塊鏈無TTP的實(shí)現(xiàn),三是基于智能合約的實(shí)現(xiàn)。
基于原始區(qū)塊鏈有TTP區(qū)塊鏈技術(shù)的公平交易實(shí)現(xiàn)[14],其內(nèi)容是交易雙方和穩(wěn)定第三方對交易進(jìn)行數(shù)字簽名,發(fā)布在比特幣網(wǎng)絡(luò),沒有發(fā)送己方簽名的一方會(huì)被懲罰一定數(shù)量的比特幣。然而該方案依賴于比特幣等數(shù)字貨幣,沒有涉及合同內(nèi)容,并且當(dāng)懲罰的比特幣超過交易額時(shí),此協(xié)議即會(huì)失效。
針對上述缺陷,于雷等人提出了一種基于原始區(qū)塊鏈的無TTP通用的雙向及多方信任的公平合同簽署協(xié)議(BFCSP)[4],交易流程如圖1所示,該協(xié)議不依賴于貨幣,當(dāng)組織A中的普通節(jié)點(diǎn)發(fā)起交易,會(huì)將合同內(nèi)容與交易一起發(fā)出,以下統(tǒng)稱交易。首先組織A中的提交節(jié)點(diǎn)對交易進(jìn)行簽名并單方面將交易上鏈,并進(jìn)行廣播,證明A已經(jīng)發(fā)起但B沒有確認(rèn),當(dāng)組織B中的節(jié)點(diǎn)接收后,會(huì)進(jìn)行簽名,同時(shí)上鏈,并進(jìn)行廣播,證明B已接收A未確認(rèn),當(dāng)A接收到信息后,簽名并上鏈,確認(rèn)A已知B接收到交易。這種共識(shí)協(xié)議完全保證了雙方的公平性,然而在A發(fā)起的一次單方交易中,需要生成三個(gè)塊,降低了區(qū)塊鏈的交易效率。
圖1 基于原始區(qū)塊鏈的公平合同簽署協(xié)議示意圖Fig.1 Diagram of FCSP based on original blockchain
以太坊技術(shù)成熟后,出現(xiàn)一種新型的基于以太坊公有鏈智能合約的公平合同簽署(EFCSP)模式[15],其中公平合同簽署通過智能合約修改交易規(guī)則實(shí)現(xiàn),基本思路是通過智能合約將待確認(rèn)交易發(fā)布到以太坊區(qū)塊鏈網(wǎng)絡(luò)中,由接收方確認(rèn)簽名。但是該方法需要將交易發(fā)布在公鏈環(huán)境中,暴露了合同內(nèi)容,因此只適用交換利益,而不適用交換具體責(zé)任,不適用實(shí)際商業(yè)環(huán)境,同時(shí)以太坊區(qū)塊鏈的交易確認(rèn)仍然帶有挖礦過程,使得交易造成計(jì)算浪費(fèi)和耗時(shí)增加。
綜上所述,三種公平合同簽署協(xié)議各自的缺陷如表1。
表1 不同公平合同簽署協(xié)議的缺陷對比Table 1 Comparison of defects in different FCSP
Fabric架構(gòu)交易確認(rèn)速度快的特性使得其更適用于公平交易環(huán)境,且相比于公鏈,F(xiàn)abric聯(lián)盟鏈有如下四個(gè)優(yōu)勢:一是引入Msp管理機(jī)制確保交易各方可信,二是使用狀態(tài)數(shù)據(jù)庫利于編寫鏈碼,三是各通道發(fā)生的交易互不干涉,四是去除了POW共識(shí)機(jī)制因而消除了算力浪費(fèi)問題[16],然而當(dāng)前并沒有研究提出基于Fabric的雙向公平合同簽署協(xié)議。圖2展示了傳統(tǒng)Fabric架構(gòu)的運(yùn)作過程[7],組織A中的普通節(jié)點(diǎn)發(fā)起交易,背書節(jié)點(diǎn)endorse進(jìn)行模擬執(zhí)行,傳遞給通道的order節(jié)點(diǎn)進(jìn)行排序共識(shí),再返回給組織A中的commit節(jié)點(diǎn)進(jìn)行上鏈操作,待確認(rèn)交易進(jìn)行加密處理,保證了交易的隱私性。然而在交易流程中可以看到交易接收方組織B并沒有證明自己接收交易,也就是說傳統(tǒng)Fabric的公平性只體現(xiàn)在了交易接收方,發(fā)起方并沒有享受到公平性,是一種單向信任。
圖2 Fabric區(qū)塊鏈運(yùn)作過程示意圖Fig.2 Diagram of Fabric blockchain operation process
以基于傳統(tǒng)區(qū)塊鏈架構(gòu)的FCSP為例,它的提出是為了實(shí)現(xiàn)雙向及多方信任,然而需要多次共識(shí)過程,而每一次共識(shí)都需要一定時(shí)間進(jìn)行[17],因此耗費(fèi)大量時(shí)間,而基于以太坊智能合約實(shí)現(xiàn)的雙向公平又失去了合同內(nèi)容的隱私。針對基于傳統(tǒng)區(qū)塊鏈、以太坊FCSP的上述缺陷,本文提出一種基于Fabric架構(gòu)的快速雙向信任的合同簽署協(xié)議(TFCSP),通過利用Fabric架構(gòu)特性修改gossip進(jìn)程來實(shí)現(xiàn),同時(shí)Fabric架構(gòu)提供的私有數(shù)據(jù)機(jī)制將同一交易的隱私數(shù)據(jù)和非隱私數(shù)據(jù)分開處理保存,保證了合同內(nèi)容的隱私,并且通過身份混淆機(jī)制賦予用戶一個(gè)短期憑證來維護(hù)交易雙方的身份隱私[7]。TFCSP具體執(zhí)行流程如圖3所示。
圖3 基于Fabric的快速公平合同簽署協(xié)議示意圖Fig.3 Diagram of TFCSP based on Fabric
組織A和組織B中的背書節(jié)點(diǎn)、領(lǐng)導(dǎo)節(jié)點(diǎn)、錨節(jié)點(diǎn)分別是endorseA(B)、leader A(B)、anchor A(B),組織A和組織B的簽名為signA和signB,常用信息以結(jié)構(gòu)體形式儲(chǔ)存在區(qū)塊鏈上,數(shù)據(jù)傳輸過程如圖4所示。
圖4 TFCSP數(shù)據(jù)傳輸過程示意圖Fig.4 Diagram of TFCSP data transfer process
當(dāng)組織A中的普通節(jié)點(diǎn)發(fā)起交易,交易以結(jié)構(gòu)體為組織形式,方便后續(xù)內(nèi)容比對,利用Fabric架構(gòu)私有數(shù)據(jù)(Private Data)機(jī)制,可以指定部分?jǐn)?shù)據(jù)為隱私數(shù)據(jù)且制訂權(quán)限策略,使僅指定節(jié)點(diǎn)可見,另外,隱私數(shù)據(jù)不會(huì)明文上傳到區(qū)塊,保證了隱私性[18],背書節(jié)點(diǎn)對交易內(nèi)容模擬執(zhí)行并簽名后發(fā)送給order節(jié)點(diǎn)進(jìn)行排序打包成塊操作,當(dāng)返回給leaderA后,由錨節(jié)點(diǎn)anchor傳向組織B。
gossip進(jìn)程判斷節(jié)點(diǎn)身份,若為leaderB,同時(shí)進(jìn)行信息驗(yàn)證,包括簽名、合同內(nèi)容,將組織A的簽名保存的簽名列表進(jìn)行比對,隨后單獨(dú)進(jìn)行交易的責(zé)任驗(yàn)證背書,通過與鏈上已存的常用信息進(jìn)行比對,驗(yàn)證合同的內(nèi)容是B可接受的,將B的驗(yàn)證意見及塊信息,隨同組織B背書節(jié)點(diǎn)的簽名一起組成結(jié)構(gòu)體返回給leaderB,由anchorB節(jié)點(diǎn)發(fā)送給組織A,leader節(jié)點(diǎn)驗(yàn)證流程如圖5所示;若不為leaderB,則根據(jù)節(jié)點(diǎn)的身份進(jìn)行對應(yīng)的背書和上傳到鏈操作。
圖5 leader節(jié)點(diǎn)的驗(yàn)證過程示意圖Fig.5 Diagram of validation process for leader node
最后以同樣方式由leaderA節(jié)點(diǎn)對組織B的驗(yàn)證信息進(jìn)行驗(yàn)證,確認(rèn)B已獲知此次交易,則將原來的塊交給commitA節(jié)點(diǎn)進(jìn)行上鏈操作。
其中組織A的簽名,形成了交易發(fā)起方的不可抵賴性,組織B對塊內(nèi)信息的簽名是證明接收方對交易合同責(zé)任的認(rèn)可,所有操作自動(dòng)化完成。相比于傳統(tǒng)的Fabric只是對交易的可達(dá)進(jìn)行背書,在本協(xié)議中,leader節(jié)點(diǎn)同時(shí)承擔(dān)了交易中責(zé)任的確認(rèn)工作,鏈上的塊內(nèi)含有交易雙方的簽名,代表雙方都認(rèn)同此次交易,達(dá)到接收方的交易前確認(rèn),增加了交易雙方的公平性,且每一次交易就只會(huì)產(chǎn)生一個(gè)塊,交易消耗時(shí)間將會(huì)大大降低。
為驗(yàn)證本文提出的快速公平合同簽署協(xié)議TFCSP的有效性,給出最常見的車險(xiǎn)方案的實(shí)現(xiàn)。在典型的車險(xiǎn)場景中,用戶一般會(huì)連接到一定數(shù)量的相關(guān)節(jié)點(diǎn),包括保險(xiǎn)公司、維修廠、交通警察、醫(yī)院以及其他涉及的角色。采用本文提出的快速公平合同簽署TFCSP的區(qū)塊鏈架構(gòu)參見圖6所示,該分層架構(gòu)中,服務(wù)層對外提供復(fù)合服務(wù),存儲(chǔ)層通過分布方式存儲(chǔ)區(qū)塊鏈中數(shù)據(jù)的冗余備份;網(wǎng)絡(luò)層連接參與車險(xiǎn)場景的各個(gè)角色節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)屬于各自組織,組織內(nèi)普通節(jié)點(diǎn)可以共享、存儲(chǔ)和更新其事務(wù)數(shù)據(jù),leader節(jié)點(diǎn)則負(fù)責(zé)數(shù)據(jù)同步和信息解析驗(yàn)證;最上層的智能合約層則提供車險(xiǎn)場景中的業(yè)務(wù)實(shí)現(xiàn);通道和排序則為這些層提供公共服務(wù),其中,通道是車險(xiǎn)區(qū)塊鏈中各類角色的具體節(jié)點(diǎn)進(jìn)行通信交易的空間,通過通道的隔離實(shí)現(xiàn)了車險(xiǎn)區(qū)塊鏈的整體對外隱私性,排序?qū)崿F(xiàn)對事務(wù)打包成塊上鏈。
圖6 車險(xiǎn)區(qū)塊鏈架構(gòu)Fig.6 Car insuranceb lockchain architecture
下文對被保人購買保險(xiǎn)這一流程進(jìn)行詳細(xì)說明,參與主體包括用戶方和保險(xiǎn)公司方:
用戶方:首先意向用戶發(fā)起保險(xiǎn)購買行為,不僅提交用戶和保險(xiǎn)公司公鑰、保額和其他保險(xiǎn)信息,還要將保險(xiǎn)公司收到信息后的應(yīng)有行為提交到背書節(jié)點(diǎn),背書節(jié)點(diǎn)會(huì)對交易進(jìn)行驗(yàn)證并簽名,隨后發(fā)送信息到order服務(wù)節(jié)點(diǎn),order服務(wù)節(jié)點(diǎn)將交易進(jìn)行打包成塊,發(fā)送給用戶組織中的leader節(jié)點(diǎn),leader節(jié)點(diǎn)獲取塊內(nèi)信息,按照交易接收方地址發(fā)送塊信息并進(jìn)行確認(rèn)簽名。
保險(xiǎn)公司方:保險(xiǎn)公司組織內(nèi)的leader節(jié)點(diǎn),不斷接收通道內(nèi)接收方為自身組織內(nèi)節(jié)點(diǎn)的信息,接收信息并解析后,對合同責(zé)任內(nèi)容進(jìn)行驗(yàn)證,驗(yàn)證結(jié)果信息附帶塊信息發(fā)送給背書節(jié)點(diǎn),背書節(jié)點(diǎn)模擬執(zhí)行并簽名,隨后返回給leader節(jié)點(diǎn),leader節(jié)點(diǎn)向用戶方返回加簽名的驗(yàn)證信息。
用戶方:當(dāng)接收到接收方為自己組織內(nèi)節(jié)點(diǎn)的信息,核查保險(xiǎn)公司的驗(yàn)證信息后,由提交節(jié)點(diǎn)進(jìn)行塊的提交上鏈過程。
實(shí)驗(yàn)的開發(fā)環(huán)境為18.04.4LTS的64位操作系統(tǒng),F(xiàn)abric的版本為1.4.4,在本地搭建了一個(gè)車險(xiǎn)區(qū)塊鏈系統(tǒng),分別應(yīng)用了現(xiàn)已有的基于原始區(qū)塊鏈的FCSP、基于智能合約的FCSP和本文提出的TFCSP。使用go語言根據(jù)常規(guī)車險(xiǎn)交易流程編寫了智能合約,修改了gossip進(jìn)程的代碼;在此基礎(chǔ)上模擬了部分交易過程,并使用開源工具Hyperledger Caliper對各種FCSP進(jìn)行對比測試,并與原生的Fabric進(jìn)行了對比。
(1)公平性分析
公平性分析包括對交易中的分析和交易后的分析,交易中的公平性指交易雙方在一次單向交易中都可以獲知交易內(nèi)容及雙方應(yīng)負(fù)的責(zé)任;交易后的公平性指區(qū)塊鏈本身的不可篡改性和可追溯。
①交易中實(shí)現(xiàn)公平:實(shí)驗(yàn)中在本地模擬進(jìn)行了一次用戶購買保險(xiǎn)的操作,通過查詢世界狀態(tài)的信息,結(jié)果如圖7所示,其中列出了用戶購買保險(xiǎn)的具體信息,證明用戶已知保險(xiǎn)公司確認(rèn)了該交易。
圖7 用戶購買保險(xiǎn)的信息Fig.7 Information about user’s purchase of insurance
②交易后的公平:塊上傳到鏈,那么由于Fabric自身的特性,鏈對通道內(nèi)每一個(gè)節(jié)點(diǎn)透明公開,即每個(gè)節(jié)點(diǎn)都可以訪問本通道的區(qū)塊鏈,并查看鏈上信息,當(dāng)現(xiàn)實(shí)交易出現(xiàn)問題時(shí),相關(guān)節(jié)點(diǎn)都無法篡改已上傳的塊。應(yīng)用本協(xié)議后,節(jié)點(diǎn)無法否認(rèn)自己沒有接收過交易對方的信息,實(shí)現(xiàn)交易全程雙向信任。
(2)性能分析
本文性能分析包括將本文提出的快速雙向信任模型與其他公平合同簽署協(xié)議及原始Fabric進(jìn)行交易完成率、吞吐量及交易耗時(shí)的比較,在Fabric架構(gòu)上以相同實(shí)驗(yàn)環(huán)境模擬了各FCSP協(xié)議,包括基于原始區(qū)塊鏈的公平合同簽署協(xié)議(BFCSP)、基于智能合約實(shí)現(xiàn)的公平合同簽署協(xié)議(EFCSP)、基于Fabric的快速公平合同簽署協(xié)議(TFCSP),同時(shí)與原生Fabric進(jìn)行對照實(shí)驗(yàn)。
①交易完成率和吞吐量對比
在進(jìn)行性能測試前,為保證區(qū)塊鏈所安裝智能合約的可執(zhí)行性,使用caliper進(jìn)行測試,指定發(fā)起次數(shù)和發(fā)起頻率,設(shè)置caliper發(fā)起頻率為100 tps,分別在發(fā)起次數(shù)為1 000、2 000和5 000時(shí)測試交易完成率和吞吐量。
圖8為交易完成率的測試結(jié)果,交易完成率越高說明系統(tǒng)的穩(wěn)定性越強(qiáng),從圖中可以看出:Fabric架構(gòu)及應(yīng)用各種協(xié)議的Fabric區(qū)塊鏈都會(huì)存在交易失敗的情況,隨著協(xié)議難度的升級,交易失敗率也在上升,但交易失敗次數(shù)增長率遠(yuǎn)小于交易發(fā)起次數(shù)的增長率,交易失敗次數(shù)增長率在四種模式中差距并不明顯,說明交易失敗次數(shù)是相對穩(wěn)定的。
圖8 交易完成率測試結(jié)果Fig.8 Trading completion rate test results
表2為吞吐量測試結(jié)果,吞吐量代表系統(tǒng)的性能,吞吐量越高說明其交易速度越快,從圖中可以看出,隨著交易發(fā)起次數(shù)的增加,吞吐量隨之增加,然而在四種模式中,發(fā)起次數(shù)越大,吞吐量就越大,并且趨于接近發(fā)起頻率。同時(shí),協(xié)議的復(fù)雜度也影響著吞吐量,從圖中可以看出,原始的區(qū)塊鏈相同條件下吞吐量最高,與之相比,TFCSP吞吐量因?yàn)閰f(xié)議的復(fù)雜而降低。
表2 吞吐量測試結(jié)果Table 2 Throughput test results
②耗時(shí)測試:在實(shí)驗(yàn)中以單次交易消耗的時(shí)間為比較標(biāo)準(zhǔn),即一次交易從提交至上傳到鏈的時(shí)間。TFCSP與其他FCSP的不同就在于除了功能智能合約外還需要gossip進(jìn)程的額外作業(yè),gossip進(jìn)程不會(huì)因?yàn)楣δ茏兓兓?,隨著功能增加,可能還會(huì)安裝功能智能合約,因此首先進(jìn)行一次交易,對功能智能合約的耗時(shí)進(jìn)行測試,再測試TFCSP整體的耗時(shí),對各FCSP和TFCSP進(jìn)行耗時(shí)對比。
首先,進(jìn)行了保險(xiǎn)公司方和用戶方之間的一次單向交易:用戶購買保險(xiǎn)。由于Fabric具備出塊可配置時(shí)間、大小及交易上限等十分靈活的特性,以極端狀況為例,設(shè)置一個(gè)塊只記錄一個(gè)交易,即batchsize:1,從而讓結(jié)果更加清晰。
其次,通過設(shè)置交易字段來改變交易大小,使得塊大小從0.2 MB到1 MB按0.2 MB的增幅逐次增加,記錄下每一次的耗時(shí)。
最后,將應(yīng)用四種模式的交易耗時(shí)進(jìn)行比較,應(yīng)用各種協(xié)議的車險(xiǎn)區(qū)塊鏈塊大小對端到端延遲的影響比較如圖9所示。
圖9 塊大小對四種模式端到端延遲的影響Fig.9 Effect of block size on end-to-end latency in four modes
結(jié)果表明:隨著塊大小的增加,四種模式的事務(wù)確認(rèn)時(shí)間都在增加,然而由于TFCSP的gossip進(jìn)程有額外任務(wù),使得性能與普通Fabric相比有明顯差距,與之相反,相比于另外兩種模式,由于TFCSP對事務(wù)的計(jì)算及上傳到鏈的次數(shù)都較少,因此使得TFCSP的事務(wù)確認(rèn)時(shí)間小于其他FCSP的確認(rèn)時(shí)間,實(shí)驗(yàn)結(jié)果也證明完成相同交易,TFCSP消耗的時(shí)間相較于其他FCSP更少,效率更高,結(jié)合圖9可以看到,TFCSP的耗時(shí)由gossip進(jìn)程執(zhí)行耗時(shí)和功能智能合約耗時(shí)兩部分組成,且gossip進(jìn)程的耗時(shí)占比更大。
綜合實(shí)驗(yàn)結(jié)果可知,當(dāng)應(yīng)用到Fabric架構(gòu)中時(shí),本文提出的TFCSP協(xié)議能夠保證雙向交易的公平,在點(diǎn)對點(diǎn)不互信交易的場景中,維護(hù)了整體交易的公平,然而為了維護(hù)公平犧牲了交易的完成率、吞吐量及耗時(shí),相比于原生的Fabric,交易耗時(shí)有一定增加,完成率及吞吐量有一定下降,而與其他協(xié)議相比,交易耗時(shí)相對較小,交易完成率及吞吐量差距較小,因此在對交易的實(shí)時(shí)要求不高的前提下,本文提出的TFCSP協(xié)議能夠滿足對公平需求較強(qiáng)的場景。
本文在對Fabric區(qū)塊鏈做了簡單介紹的基礎(chǔ)上,討論了多種基于區(qū)塊鏈的公平合同簽署協(xié)議,并面向Fabric架構(gòu)對其進(jìn)行了改進(jìn),減少了生成的塊,降低了交易耗時(shí),最后通過實(shí)驗(yàn)在具體的車險(xiǎn)場景下進(jìn)行了公平性及性能分析。實(shí)驗(yàn)結(jié)果表明本文提出的基于Fabric的公平合同簽署協(xié)議相較于已有的FCSP來說,在保證了雙向信任公平性的前提下,大大提高了交易的確認(rèn)效率,進(jìn)一步解決了保險(xiǎn)領(lǐng)域中由于信息不對稱導(dǎo)致的信任缺失問題。然而在實(shí)際場景中,可能面臨多個(gè)角色的多個(gè)節(jié)點(diǎn)同時(shí)進(jìn)行交易,因此下一步的研究方向是討論在這種并發(fā)場景下如何界定并保證公平性。