孫嘉豪,孟翔斯,張浩運(yùn),常小林,徐 燕,關(guān) 莊
(天津理工大學(xué) a.管理學(xué)院; b.計(jì)算機(jī)科學(xué)與工程學(xué)院,天津 300384)
隨著互聯(lián)網(wǎng)的迅速發(fā)展,知識(shí)產(chǎn)權(quán)保護(hù)已不再局限于書籍、期刊及音像出版物等實(shí)體內(nèi)容,而是開始向數(shù)字化方向發(fā)展。據(jù)統(tǒng)計(jì),2017年我國(guó)數(shù)字出版產(chǎn)業(yè)整體收入規(guī)模已達(dá)7 071.93億元,比上年增長(zhǎng)了23%[1]?;ヂ?lián)網(wǎng)數(shù)字產(chǎn)權(quán)業(yè)在帶動(dòng)社會(huì)經(jīng)濟(jì)持續(xù)快速發(fā)展的同時(shí),也為知識(shí)產(chǎn)權(quán)的保護(hù)帶來一系列問題。比如,數(shù)量龐大且類型繁雜的知識(shí)作品無法進(jìn)行有效的產(chǎn)權(quán)登記,造成作者合法權(quán)益難以保障。同時(shí),難以統(tǒng)一的知識(shí)產(chǎn)權(quán)管理平臺(tái)造成產(chǎn)權(quán)歸屬模糊不清的問題,以及以零成本復(fù)制、秒速傳播等方式為主的盜版技術(shù)的跟進(jìn),也為知識(shí)產(chǎn)權(quán)的保護(hù)帶來巨大挑戰(zhàn)。
針對(duì)上述問題,目前主要采用數(shù)字水印(Digital Watermarking)技術(shù)[2]在知識(shí)作品內(nèi)容上聲明產(chǎn)權(quán)歸屬,并加強(qiáng)相關(guān)法律法規(guī)的建設(shè)。但是數(shù)字水印技術(shù)不但沒有解決當(dāng)前知識(shí)產(chǎn)權(quán)存在的諸多問題,而且還形成了產(chǎn)業(yè)壟斷,強(qiáng)制性的法律法規(guī)只能在侵權(quán)發(fā)生后再予以懲罰,不能及時(shí)保護(hù)知識(shí)產(chǎn)權(quán)。為此,文獻(xiàn)[3]提出利用嵌入式版權(quán)服務(wù)組件的形式,通過基于可信第三方的模式管理各大數(shù)字作品出版平臺(tái),并進(jìn)行統(tǒng)一的版權(quán)認(rèn)證和記錄。文獻(xiàn)[4]提出基于哈希的分布式認(rèn)證算法和信譽(yù)值的反盜版機(jī)制數(shù)字出版物盜版?zhèn)鞑栴},但上述研究都是基于可信第三方來實(shí)現(xiàn)版權(quán)管理,不能做到產(chǎn)權(quán)認(rèn)證的絕對(duì)權(quán)威。文獻(xiàn)[5]提出基于區(qū)塊鏈的數(shù)字作品數(shù)字版權(quán)唯一標(biāo)識(shí)符(DCI)管控模型,通過區(qū)塊鏈技術(shù)進(jìn)行版權(quán)認(rèn)證和交易,但沒有考慮到挖礦機(jī)制成本過高且共識(shí)效率極低,并不能實(shí)際應(yīng)用于知識(shí)產(chǎn)權(quán)保護(hù)。
本文構(gòu)造一種基于改進(jìn)PBFT的知識(shí)產(chǎn)權(quán)保護(hù)模型,以實(shí)現(xiàn)對(duì)知識(shí)作品進(jìn)行產(chǎn)權(quán)登記、產(chǎn)權(quán)交易和高效保護(hù)的管控服務(wù)。通過搭建去中心化的多節(jié)點(diǎn)產(chǎn)權(quán)保護(hù)平臺(tái),采用改進(jìn)的PBFT共識(shí)機(jī)制解決節(jié)點(diǎn)共識(shí)問題,并建立分布式數(shù)據(jù)庫系統(tǒng),將作品的完整內(nèi)容存儲(chǔ)在原始數(shù)據(jù)庫中,降低知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈上的存儲(chǔ)負(fù)荷和高頻訪問壓力。同時(shí),本文設(shè)計(jì)智能合約自動(dòng)化執(zhí)行預(yù)設(shè)指令,從而保證平臺(tái)的高效性和透明性,有效解決當(dāng)前知識(shí)作品的產(chǎn)權(quán)保護(hù)問題。
區(qū)塊鏈[6]本質(zhì)上是一種分布式數(shù)據(jù)庫,它對(duì)數(shù)據(jù)庫的結(jié)構(gòu)進(jìn)行創(chuàng)新,將數(shù)據(jù)存儲(chǔ)在不同的區(qū)塊內(nèi),區(qū)塊間按照時(shí)間順序并通過哈希算法鏈接起來,由多個(gè)獨(dú)立的共識(shí)節(jié)點(diǎn)共同維護(hù),具有去中心化、去信任化、安全性和可溯源性的特點(diǎn)。每個(gè)區(qū)塊分為區(qū)塊頭和區(qū)塊體2個(gè)部分,區(qū)塊頭主要包含上一區(qū)塊的哈希值、時(shí)間戳、隨機(jī)數(shù)和默克爾根等信息,而區(qū)塊體主要用來封裝數(shù)據(jù)信息[7-9]。區(qū)塊鏈結(jié)構(gòu)示意圖如圖1所示。
圖1 區(qū)塊鏈結(jié)構(gòu)示意圖Fig.1 Schematic diagram of blockchain structure
區(qū)塊鏈技術(shù)的獨(dú)特性在于區(qū)塊內(nèi)存儲(chǔ)的數(shù)據(jù)信息只能增加,不能修改或刪除[10]。系統(tǒng)中如果出現(xiàn)對(duì)區(qū)塊數(shù)據(jù)進(jìn)行刪改的操作,則會(huì)在新的區(qū)塊內(nèi)留下數(shù)據(jù)被刪改的記錄。因此,區(qū)塊鏈能夠完整記錄一份數(shù)據(jù)從產(chǎn)生到每一次修改的所有過程,從而保證數(shù)據(jù)的可溯源性。同時(shí),利用節(jié)點(diǎn)間的分布式共識(shí)機(jī)制驗(yàn)證區(qū)塊數(shù)據(jù)的準(zhǔn)確性和一致性來保證數(shù)據(jù)難以篡改。
智能合約[11]是一種可以由事件驅(qū)動(dòng)、具備狀態(tài)機(jī)制且可根據(jù)預(yù)設(shè)條件自動(dòng)執(zhí)行合約條款的程序化協(xié)議。它取代了傳統(tǒng)的紙質(zhì)合同,減少了在合約制定、控制協(xié)議和執(zhí)行效率上的人工花費(fèi)與計(jì)算成本[12]。
在知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈網(wǎng)絡(luò)中,每一份智能合約都擁有與其對(duì)應(yīng)的合約賬戶,設(shè)定不同條件下的觸發(fā)事件部署智能合約,如果滿足預(yù)設(shè)條件則調(diào)用合約接口觸發(fā)執(zhí)行。
PBFT[13]用于解決如何在存在錯(cuò)誤節(jié)點(diǎn)的分布式系統(tǒng)中保證決策一致性的問題。PBFT共識(shí)算法主要由一致性協(xié)議、視圖轉(zhuǎn)換協(xié)議和檢查點(diǎn)協(xié)議3個(gè)方面組成。其中,一致性協(xié)議通過類似投票的方式完成一致性檢驗(yàn),視圖轉(zhuǎn)換協(xié)議用于替換故障節(jié)點(diǎn)從而保證系統(tǒng)正常運(yùn)行,檢查點(diǎn)協(xié)議用于調(diào)整節(jié)點(diǎn)狀態(tài)并清除交互數(shù)據(jù)以減少節(jié)點(diǎn)存儲(chǔ)壓力[14]。在總節(jié)點(diǎn)數(shù)為n的系統(tǒng)中,PBFT算法能容忍的錯(cuò)誤節(jié)點(diǎn)數(shù)f最大值為(n-1)/3。
PBFT算法流程如圖2所示,且具體步驟如下:
1)Request階段:客戶端(Client)針對(duì)要進(jìn)行的操作選擇一個(gè)主節(jié)點(diǎn)發(fā)送請(qǐng)求消息。
2)Pre-Prepare階段:主節(jié)點(diǎn)(Primary)接收請(qǐng)求消息,并將請(qǐng)求分類、排序后廣播給所有從節(jié)點(diǎn)(Replica)。
3)Prepare階段:從節(jié)點(diǎn)對(duì)接收到的消息進(jìn)行驗(yàn)證,并將結(jié)果廣播給其他節(jié)點(diǎn)。
4)Commit階段:節(jié)點(diǎn)間互相驗(yàn)證接收到的消息,若驗(yàn)證結(jié)果一致則向客戶端廣播一條消息。
5)Reply階段:客戶端接收到的消息大于2f+1條時(shí),則共識(shí)達(dá)成。其中,f為錯(cuò)誤節(jié)點(diǎn)的個(gè)數(shù)。
圖2 PBFT算法流程Fig.2 Procedure of PBFT algorithm
在PBFT算法中,整個(gè)網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù)目是固定的,擴(kuò)展性較差,不能適應(yīng)動(dòng)態(tài)變化的網(wǎng)絡(luò)系統(tǒng)。此外,由于一致性協(xié)議中存在復(fù)雜的通信過程,對(duì)節(jié)點(diǎn)間的共識(shí)效率影響較大。因此,PBFT算法還存在較大的改進(jìn)空間。
本文模型設(shè)計(jì)了去中心化的知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈網(wǎng)絡(luò)體系架構(gòu),具體如圖3所示。
圖3 知識(shí)產(chǎn)權(quán)保護(hù)模型架構(gòu)Fig.3 Structure of intellectual property protection model
知識(shí)產(chǎn)權(quán)保護(hù)模型架構(gòu)包括以下2個(gè)部分:
1)用戶端。用戶A在用戶端上傳其作品,在上傳過程中會(huì)進(jìn)行抄襲檢測(cè)。抄襲檢測(cè)技術(shù)種類眾多,其本質(zhì)是在對(duì)文本特征值提取的基礎(chǔ)上進(jìn)行后續(xù)處理。國(guó)內(nèi)外研究人員對(duì)文本抄襲檢測(cè)算法有不同的思路,其中,文獻(xiàn)[15]針對(duì)Shingles算法進(jìn)行優(yōu)化,并對(duì)指紋特征的選取進(jìn)行改進(jìn)。文獻(xiàn)[16]利用文檔的概念在不同結(jié)構(gòu)層次上對(duì)文檔和段落級(jí)別進(jìn)行剽竊測(cè)試。文獻(xiàn)[17]提出一種基于局部詞頻指紋的抄襲檢測(cè)算法,將句子作為文檔的基本構(gòu)成元素,并對(duì)其進(jìn)行有效關(guān)鍵詞提取排序重構(gòu),在一定程度上克服了現(xiàn)有抄襲檢測(cè)算法檢測(cè)精度較低的缺點(diǎn),且具有較快的檢測(cè)速度。采用合適的抄襲檢測(cè)技術(shù)能夠快速而準(zhǔn)確地檢測(cè)出上傳作品是否具有原創(chuàng)性。檢測(cè)通過后客戶端向知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈網(wǎng)絡(luò)發(fā)起交易請(qǐng)求,調(diào)用知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈網(wǎng)絡(luò)接口,執(zhí)行已經(jīng)部署的產(chǎn)權(quán)登記合約。將作品的產(chǎn)權(quán)信息和由文件特征值提取的哈希摘要寫入新的數(shù)據(jù)區(qū)塊,通過節(jié)點(diǎn)共識(shí)驗(yàn)證后鏈接到區(qū)塊鏈上,并將作品的完整內(nèi)容存入數(shù)據(jù)庫。若用戶B需要與用戶A進(jìn)行產(chǎn)權(quán)交易,則需在用戶端發(fā)起交易請(qǐng)求。通過調(diào)用與操作相應(yīng)的合約接口,執(zhí)行相應(yīng)的智能合約后根據(jù)交易信息生成新的數(shù)據(jù)區(qū)塊,通過節(jié)點(diǎn)共識(shí)驗(yàn)證后入鏈,且入鏈后的數(shù)據(jù)不能篡改。同時(shí),由于區(qū)塊鏈內(nèi)的每個(gè)區(qū)塊都包含時(shí)間戳,從而為知識(shí)作品的產(chǎn)權(quán)歸屬提供有力證據(jù),避免了產(chǎn)權(quán)糾紛問題。
2)知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈網(wǎng)絡(luò)。節(jié)點(diǎn)接收到來自客戶端的交易請(qǐng)求,依據(jù)請(qǐng)求類型調(diào)用相應(yīng)的智能合約接口。將在本地生成的交易數(shù)據(jù)打包進(jìn)入新的區(qū)塊,通過改進(jìn)的PBFT共識(shí)機(jī)制向全網(wǎng)廣播交易數(shù)據(jù),達(dá)成共識(shí)后的新區(qū)塊鏈接上鏈。
本文模型采用的數(shù)據(jù)信息存儲(chǔ)機(jī)制主要分為傳統(tǒng)數(shù)據(jù)庫存儲(chǔ)和區(qū)塊鏈存儲(chǔ)2個(gè)部分。其中,數(shù)據(jù)庫用于存放確權(quán)作品的完整內(nèi)容,區(qū)塊鏈用于存儲(chǔ)確權(quán)作品的唯一摘要和產(chǎn)權(quán)信息等數(shù)據(jù),從而減少區(qū)塊存儲(chǔ)的數(shù)據(jù)量,有利于提高節(jié)點(diǎn)間的共識(shí)效率和對(duì)確權(quán)作品的檢索速度。
以用戶上傳原創(chuàng)作品并進(jìn)行產(chǎn)權(quán)登記為例,用戶在客戶端上傳知識(shí)作品并通過抄襲檢測(cè)后,客戶端向知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈網(wǎng)絡(luò)發(fā)起交易請(qǐng)求,調(diào)用知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈接口,觸發(fā)部署在區(qū)塊鏈節(jié)點(diǎn)上的產(chǎn)權(quán)登記合約,并構(gòu)造新區(qū)塊。該節(jié)點(diǎn)向其他各個(gè)節(jié)點(diǎn)廣播交易信息,通過改進(jìn)的PBFT共識(shí)機(jī)制驗(yàn)證新區(qū)塊的正確性,達(dá)成共識(shí)后的新區(qū)塊鏈接上鏈。新區(qū)塊構(gòu)造流程如圖4所示。
圖4 新區(qū)塊構(gòu)造流程Fig.4 Construction procedure of new block
本文模型設(shè)計(jì)了基于智能合約的知識(shí)產(chǎn)權(quán)管控協(xié)議,該協(xié)議主要由產(chǎn)權(quán)登記合約(Property Registration Contract,PRC)和產(chǎn)權(quán)轉(zhuǎn)讓合約(Property Transfer Contract,PTC)2個(gè)部分組成。
2.3.1 產(chǎn)權(quán)登記合約
產(chǎn)權(quán)登記合約用于用戶在知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈上登記自身作品的知識(shí)產(chǎn)權(quán)。用戶在客戶端完成注冊(cè)賬戶并實(shí)名認(rèn)證后,發(fā)布作品時(shí)可以選擇在區(qū)塊鏈上登記作品所有權(quán)。在登記過程中通過調(diào)用已經(jīng)部署完備的PRC,先在區(qū)塊鏈上檢測(cè)用戶發(fā)起的認(rèn)證消息message是否是該作品的初始化擁有者,如果無法通過認(rèn)證,則用戶不能在區(qū)塊鏈上登記自身作品的知識(shí)產(chǎn)權(quán);通過認(rèn)證后,PRC根據(jù)作品內(nèi)容生成唯一的哈希摘要,并將作品信息和哈希摘要寫入新區(qū)塊,該哈希摘要作為作品的唯一標(biāo)識(shí)返回給該用戶。產(chǎn)權(quán)登記合約設(shè)計(jì)如算法1所示。
算法1產(chǎn)權(quán)登記合約
輸入dataset,theobjectoftransaction
輸出HashAbstract
1.procedure receiveDataset(dataset);
2.if message.sender=writer then;
3.dataset=new Transaction();//初始化交易信息
4.dataset.name=dataset.name;
5.dataset.time=this.time;
6.dataset.content=dataset.content;
7.HashAbstract=Hash(dataset);//生成登記作品的哈希
//摘要
8.WriteToBlock(dataset,HashAbstract);//作品唯一的
//哈希摘要入鏈
9.return HashAbstract;
10.end if
11.end procedure
2.3.2 產(chǎn)權(quán)轉(zhuǎn)讓合約
產(chǎn)權(quán)轉(zhuǎn)讓合約可供用戶通過交易的方式獲得產(chǎn)權(quán)所有者擁有作品的各項(xiàng)權(quán)利。當(dāng)買方與賣方就某項(xiàng)作品達(dá)成具體交易共識(shí)后,買方可通過發(fā)起產(chǎn)權(quán)轉(zhuǎn)讓請(qǐng)求來觸發(fā)相關(guān)作品的產(chǎn)權(quán)轉(zhuǎn)讓合約。如果產(chǎn)權(quán)所有者對(duì)該交易合約無其他要求,則該作品的產(chǎn)權(quán)轉(zhuǎn)讓合約將在產(chǎn)權(quán)所有者確認(rèn)同意后自動(dòng)執(zhí)行。通過調(diào)用交易函數(shù)進(jìn)行轉(zhuǎn)賬操作,買方將在支付交易金額后獲得該作品的權(quán)益,交易記錄在區(qū)塊鏈節(jié)點(diǎn)共識(shí)通過后寫入?yún)^(qū)塊鏈。若產(chǎn)權(quán)擁有者拒絕該項(xiàng)交易,則交易取消。產(chǎn)權(quán)轉(zhuǎn)讓合約設(shè)計(jì)如算法2所示。
算法2產(chǎn)權(quán)轉(zhuǎn)讓合約
輸入dataset,theobjectoftransaction
輸出NewHashAbstract
1.procedure receiveDataset(dataset);
2.if message.sender=wirter then;
3.if dataset.operation=true then;
4.transfer(dataset.to,dataset.from)//買方轉(zhuǎn)賬給賣方
5.RemoveFrom(writer,HashAbstract);//產(chǎn)權(quán)所有者轉(zhuǎn)
//讓作品產(chǎn)權(quán)
6.LinkTo(dataset.buyer,HashAbstract);//交易結(jié)果
//入鏈
7.end if
8.pop(dataset);
9.end if
10.end procedure
由于PBFT算法在面向知識(shí)產(chǎn)權(quán)保護(hù)的系統(tǒng)應(yīng)用中存在明顯不足,如系統(tǒng)共識(shí)效率隨著節(jié)點(diǎn)數(shù)目的增加而不斷降低和擴(kuò)展性較差等問題,本文基于知識(shí)產(chǎn)權(quán)保護(hù)區(qū)塊鏈的應(yīng)用場(chǎng)景,對(duì)傳統(tǒng)的PBFT算法進(jìn)行改進(jìn)。通過研究POW、POS和DPOS等共識(shí)算法來分析改進(jìn)PBFT算法的優(yōu)缺點(diǎn),并提出基于信用機(jī)制的CPBFT共識(shí)機(jī)制。PBFT算法的改進(jìn)主要從以下3個(gè)方面進(jìn)行展開。
2.4.1 簡(jiǎn)化的一致性協(xié)議
PBFT的一致性協(xié)議中存在主節(jié)點(diǎn)和從節(jié)點(diǎn)2種節(jié)點(diǎn)。一次共識(shí)過程中主節(jié)點(diǎn)只能隨機(jī)確定一個(gè),負(fù)責(zé)對(duì)一段時(shí)間內(nèi)接收到的消息進(jìn)行驗(yàn)證,通過驗(yàn)證的交易將被打包進(jìn)新區(qū)塊,隨后新區(qū)塊同步入鏈[18]。但一次完整的一致性協(xié)議需要完成2次復(fù)雜度為O(n2)的通信過程,復(fù)雜度過高,且PBFT中所有節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn)的概率是相等的,而非誠(chéng)實(shí)節(jié)點(diǎn),即偽節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn)后,將會(huì)增加共識(shí)次數(shù),并降低共識(shí)效率[19]。
為了降低非誠(chéng)實(shí)節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn)的概率,盡量避免主節(jié)點(diǎn)發(fā)生錯(cuò)誤的可能性,本文提出信用值CV和信用閾值CVT(所有節(jié)點(diǎn)信用值的中位數(shù))的概念。信用值是基于節(jié)點(diǎn)在共識(shí)過程中的具體行為得到的,通過信用值累積,多次順利完成區(qū)塊生成的節(jié)點(diǎn)將擁有更高的信用值,信用值越高的節(jié)點(diǎn)發(fā)生錯(cuò)誤的可能性越小,不僅能有效提高共識(shí)效率,還可有效解決PBFT算法本身節(jié)點(diǎn)動(dòng)態(tài)性能較差的問題。在簡(jiǎn)化的一致性協(xié)議中,通過將所有節(jié)點(diǎn)按信用值進(jìn)行排序,在CVT以上的節(jié)點(diǎn)中隨機(jī)選取一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn)進(jìn)行共識(shí)。CPBFT算法流程如圖5所示,具體步驟為:
步驟1客戶端從信用值在CVT以上的節(jié)點(diǎn)中隨機(jī)選取一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn),新區(qū)塊由主節(jié)點(diǎn)生成。
步驟2主節(jié)點(diǎn)將客戶端發(fā)送的交易證書向全網(wǎng)廣播,如果從節(jié)點(diǎn)認(rèn)可證書內(nèi)容則向主節(jié)點(diǎn)回復(fù)認(rèn)可信息。
步驟3如果主節(jié)點(diǎn)接收到的認(rèn)可信息條數(shù)大于等于2f(f為宕機(jī)節(jié)點(diǎn)個(gè)數(shù)),則將認(rèn)可信息打包發(fā)送給從節(jié)點(diǎn),從節(jié)點(diǎn)可以驗(yàn)證其他節(jié)點(diǎn)的認(rèn)可信息是否正確,通過驗(yàn)證后進(jìn)入Commit狀態(tài)。
步驟4如果客戶端接收到2f+1條Commit信息,則可將新區(qū)塊鏈接到區(qū)塊鏈尾部。
圖5 CPBFT算法流程Fig.5 Procedure of CPBFT algorithm
在成功完成一輪共識(shí)后,將已經(jīng)打包進(jìn)入新區(qū)塊的交易從待確認(rèn)交易列表中移除,并開始進(jìn)入下一輪的建塊共識(shí)過程。在循環(huán)一定的周期后,進(jìn)入檢查點(diǎn)協(xié)議更新節(jié)點(diǎn)信用值,簡(jiǎn)化的一致性協(xié)議不僅簡(jiǎn)化了通信過程,降低共識(shí)過程中造成的通信開銷,還提高了系統(tǒng)效率。
2.4.2 改進(jìn)的檢查點(diǎn)協(xié)議
由于共識(shí)過程中可能存在個(gè)別節(jié)點(diǎn)因?yàn)樽陨砉收匣蚓W(wǎng)絡(luò)問題而落后于其他節(jié)點(diǎn),致使區(qū)塊鏈網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)無法及時(shí)完成系統(tǒng)中的各項(xiàng)交互任務(wù)。因此,PBFT算法采用一個(gè)周期性的檢查點(diǎn)協(xié)議來同步整個(gè)系統(tǒng),以防止由于節(jié)點(diǎn)不一致而導(dǎo)致的系統(tǒng)故障[20],但將會(huì)增加網(wǎng)絡(luò)開銷。
CPBFT算法在檢查點(diǎn)協(xié)議中擴(kuò)展了動(dòng)態(tài)增刪節(jié)點(diǎn)和節(jié)點(diǎn)信用再分配功能。當(dāng)區(qū)塊鏈中存在節(jié)點(diǎn)的信用值達(dá)到100時(shí),執(zhí)行檢查點(diǎn)協(xié)議,各節(jié)點(diǎn)對(duì)區(qū)塊的請(qǐng)求日志進(jìn)行清除,有效減少節(jié)點(diǎn)存儲(chǔ)壓力和網(wǎng)絡(luò)開銷。同時(shí),對(duì)系統(tǒng)中所有節(jié)點(diǎn)重新進(jìn)行隨機(jī)信用值分配,分配范圍為10~30,增加了新節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn)的概率,實(shí)現(xiàn)動(dòng)態(tài)增刪節(jié)點(diǎn),避免了節(jié)點(diǎn)權(quán)利過大的問題。CPBFT算法通過結(jié)合簡(jiǎn)化的一致性協(xié)議,能夠大幅減少通信開銷,提高系統(tǒng)效率。
2.4.3 增加的信用值優(yōu)先協(xié)議
CPBFT算法是基于信用機(jī)制進(jìn)行改進(jìn)的,系統(tǒng)中節(jié)點(diǎn)的信用值通過節(jié)點(diǎn)行為產(chǎn)生。在成功完成一輪共識(shí)后,對(duì)于故障節(jié)點(diǎn),將信用值減少10,除了主節(jié)點(diǎn)之外,達(dá)成共識(shí)的節(jié)點(diǎn)將信用值增加1,主節(jié)點(diǎn)成功建塊后獲得收益,但信用值不變。多次成功建塊后的節(jié)點(diǎn)將獲得更多的信用分?jǐn)?shù),只有信用值在CVT以上的節(jié)點(diǎn)才能優(yōu)先成為主節(jié)點(diǎn)。
在傳統(tǒng)的PBFT算法中,節(jié)點(diǎn)數(shù)量越多,節(jié)點(diǎn)間的共識(shí)效率越低,節(jié)點(diǎn)發(fā)生故障的可能性越高[21]。由于CPBFT算法中引入了信用值機(jī)制,主節(jié)點(diǎn)的選擇依據(jù)信用值優(yōu)先協(xié)議,信用值越高的節(jié)點(diǎn)發(fā)生錯(cuò)誤的可能性越小。該算法通過結(jié)合簡(jiǎn)化的一致性協(xié)議,不僅能夠有效避免主節(jié)點(diǎn)錯(cuò)誤的可能性,提高共識(shí)效率,同時(shí)還可有效解決PBFT算法本身節(jié)點(diǎn)動(dòng)態(tài)性能較差的問題。
傳統(tǒng)的系統(tǒng)架構(gòu)以中心服務(wù)器為核心,將所有數(shù)據(jù)集存儲(chǔ)在一個(gè)中心化的數(shù)據(jù)庫中,數(shù)據(jù)的安全完全依賴中心服務(wù)器的安全。如果中心服務(wù)器受到攻擊或出現(xiàn)故障,將會(huì)影響整個(gè)系統(tǒng)的正常運(yùn)行。
本文模型應(yīng)用去中心化的區(qū)塊鏈架構(gòu),確保系統(tǒng)模型即使受到網(wǎng)絡(luò)攻擊或單個(gè)節(jié)點(diǎn)故障時(shí)也能夠正常運(yùn)行。節(jié)點(diǎn)安全性示意圖如圖6所示,如果某個(gè)節(jié)點(diǎn)的區(qū)塊信息被非法篡改,則其他節(jié)點(diǎn)會(huì)在共識(shí)驗(yàn)證過程中將其判定為偽造節(jié)點(diǎn),篡改的信息由于無法同步到區(qū)塊鏈網(wǎng)絡(luò)的其他節(jié)點(diǎn)而失效,該機(jī)制有效保障了系統(tǒng)數(shù)據(jù)的安全性和可靠性。
圖6 節(jié)點(diǎn)安全性示意圖Fig.6 Schematic diagram of node security
本文將從通信開銷分析、吞吐量分析、可靠性分析和容錯(cuò)性分析4個(gè)方面對(duì)CPBFT算法進(jìn)行仿真實(shí)驗(yàn),并與PBFT算法進(jìn)行性能對(duì)比,以驗(yàn)證CPBFT算法的有效性。實(shí)驗(yàn)在配置為i7-3920XM 2.30 GHz處理器、12 GB內(nèi)存的Linux操作系統(tǒng)下進(jìn)行,通過搭建虛擬機(jī)模擬多個(gè)區(qū)塊鏈節(jié)點(diǎn)進(jìn)行仿真實(shí)驗(yàn),且算法由Solitidy語言實(shí)現(xiàn)。
3.2.1 通信開銷分析
1)PBFT算法的通信開銷
在PBFT算法的一致性協(xié)議過程中,總共需要進(jìn)行3次階段性廣播。假設(shè)全網(wǎng)節(jié)點(diǎn)數(shù)為m,則完成一次一致性協(xié)議需要傳遞的消息次數(shù)T為:
T=2m(m-1)
(1)
若在一致性協(xié)議中主節(jié)點(diǎn)發(fā)生宕機(jī),則PBFT算法進(jìn)入視圖變更階段,并重新選擇新的主節(jié)點(diǎn)。這一階段要求每個(gè)從節(jié)點(diǎn)廣播視圖變更請(qǐng)求,發(fā)生的通信次數(shù)為(m-1)2。新視圖的主節(jié)點(diǎn)再將視圖變更確認(rèn)消息發(fā)送給所有從節(jié)點(diǎn),發(fā)生的通信次數(shù)為(m-1),則系統(tǒng)在概率為μ情況下發(fā)生視圖變更后的通信總次數(shù)S為:
S=2m(m-1)+μm(m-1)
(2)
2)CPBFT算法的通信開銷
CPBFT算法簡(jiǎn)化了原一致性協(xié)議過程中的2次全節(jié)點(diǎn)廣播,縮短了共識(shí)過程。假設(shè)全網(wǎng)節(jié)點(diǎn)數(shù)為m,則完成一次一致性協(xié)議需要傳遞的消息次數(shù)T為:
T=4(m-1)
(3)
由于CPBFT算法中視圖變更階段與PBFT算法一致,因此系統(tǒng)在概率為μ情況下發(fā)生視圖變更后的通信總次數(shù)S為:
S=4(m-1)+μm(m-1)
(4)
3)通信開銷比較
令PBFT算法與CPBFT算法的通信開銷之比為γ,則有:
(5)
由式(5)可知:當(dāng)μ=0,即不發(fā)生視圖變更情況時(shí),CPBFT算法的通信次數(shù)是PBFT算法的2/m,由于PBFT算法要求共識(shí)節(jié)點(diǎn)至少為4個(gè),因此CPBFT算法的通信次數(shù)至多是PBFT算法的一半,且隨著區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)的增加,CPBFT算法能夠更加有效降低共識(shí)過程中的通信次數(shù);當(dāng)0<μ≤1,即發(fā)生視圖變更情況時(shí),將μ值視為自變量,m值視為常數(shù),則當(dāng)μ=1時(shí),CPBFT算法的通信次數(shù)是PBFT算法的(4+m)/3m,其值最大為2/3;當(dāng)μ=0.5時(shí),CPBFT算法的通信次數(shù)是PBFT算法的(8+m)/5m,其值最大為3/5。由此可知,μ值越小,CPBFT算法的通信次數(shù)越接近于PBFT算法的一半。由于CPBFT算法是基于信用機(jī)制選取主節(jié)點(diǎn),因此發(fā)生視圖變更狀況的幾率極小。在系統(tǒng)節(jié)點(diǎn)足夠大的情況下,CPBFT算法能夠比PBFT算法更有效地減少系統(tǒng)在共識(shí)過程中的數(shù)據(jù)傳輸量和通信開銷,大幅提升共識(shí)效率。
3.2.2 可靠性分析
在CPBFT算法中,隨著節(jié)點(diǎn)信用值的不斷變化,信用值越高的節(jié)點(diǎn)越可靠,所選主節(jié)點(diǎn)的誠(chéng)實(shí)性概率也越高。由增加的信用值優(yōu)先協(xié)議可知,共識(shí)驗(yàn)證中主節(jié)點(diǎn)的隨機(jī)選取服從等概率均勻分布。為了驗(yàn)證信用值機(jī)制能夠有效提高主節(jié)點(diǎn)的誠(chéng)實(shí)性概率,本文選取蒙特卡羅方法進(jìn)行實(shí)驗(yàn)分析。假設(shè)重復(fù)實(shí)驗(yàn)次數(shù)為m,每次實(shí)驗(yàn)的共識(shí)次數(shù)為n,主節(jié)點(diǎn)是誠(chéng)實(shí)節(jié)點(diǎn)的頻數(shù)為f,則在每次重復(fù)實(shí)驗(yàn)中所選主節(jié)點(diǎn)是誠(chéng)實(shí)節(jié)點(diǎn)的頻率P(A)為:
P(A)=f/n
(6)
當(dāng)n足夠大時(shí),P(A)將按照概率收斂于第i次實(shí)驗(yàn)的理論概率P(Ai),則有:
(7)
將所選主節(jié)點(diǎn)是誠(chéng)實(shí)節(jié)點(diǎn)的頻率作為主節(jié)點(diǎn)誠(chéng)實(shí)性概率的近似值,取m次重復(fù)實(shí)驗(yàn)的概率均值作為最后的期望概率,則有:
(8)
通過對(duì)CPBFT算法進(jìn)行仿真實(shí)驗(yàn)求解期望概率,分析驗(yàn)證該方法的收斂性與效率,主節(jié)點(diǎn)誠(chéng)實(shí)性概率的收斂結(jié)果如圖7所示。從圖7可以看出:當(dāng)共識(shí)次數(shù)n達(dá)到512時(shí),標(biāo)準(zhǔn)差已經(jīng)小于0.010,其波動(dòng)程度顯著減小;當(dāng)共識(shí)次數(shù)n超過1 000時(shí),該方法已達(dá)到較為理想的收斂結(jié)果;當(dāng)共識(shí)次數(shù)n達(dá)到2 048時(shí),該方法已取得相當(dāng)可信的計(jì)算結(jié)果。顯然,采用該方法衡量信用值機(jī)制對(duì)主節(jié)點(diǎn)誠(chéng)實(shí)性概率的影響較為有效。
圖7 主節(jié)點(diǎn)誠(chéng)實(shí)性概率的收斂結(jié)果Fig.7 Convergence results of honesty probabilityof master node
3.2.3 吞吐量測(cè)試
本文選用5個(gè)節(jié)點(diǎn)進(jìn)行仿真實(shí)驗(yàn),滿足PBFT算法的要求。以交易確認(rèn)速率TPS為衡量模型處理交易效率的評(píng)價(jià)指標(biāo),其為單位時(shí)間內(nèi)能打包進(jìn)區(qū)塊的交易數(shù)量的平均值:
TPS=transactionsΔt/Δt
(9)
其中,transactionsΔt表示出塊時(shí)間內(nèi)系統(tǒng)處理的交易數(shù)量,Δt表示出塊時(shí)間段。
圖8顯示了CPBFT算法的區(qū)塊大小和吞吐量之間的關(guān)系。從圖8可以看出,CPBFT算法的吞吐量隨著區(qū)塊大小的增加而呈現(xiàn)遞增趨勢(shì),當(dāng)單個(gè)區(qū)塊內(nèi)包含的交易數(shù)量在1 000筆左右時(shí)吞吐量趨于平穩(wěn),約為200筆/s。
圖8 CPBFT算法區(qū)塊大小與吞吐量的關(guān)系Fig.8 Relationship between block size and throughputof CPBFT algorithm
將區(qū)塊大小定義為單個(gè)區(qū)塊包含的交易數(shù)量,根據(jù)實(shí)驗(yàn)得到CPBFT算法與PBFT算法的吞吐量對(duì)比結(jié)果,如圖9所示。從圖9可以看出,在相同的系統(tǒng)環(huán)境下,CPBFT算法的吞吐量比PBFT算法高,且隨著交易數(shù)量的增大,吞吐量提升地更加明顯,這說明CPBFT算法比PBFT算法更高效地完成了節(jié)點(diǎn)共識(shí)。
圖9 2種算法的吞吐量比較Fig.9 Comparison of throughput of two algorithms
3.2.4 共識(shí)延遲測(cè)試
共識(shí)延遲測(cè)試是比較共識(shí)算法運(yùn)行速度的重要方法,本文通過比較2種算法在相同環(huán)境下,單個(gè)區(qū)塊包含的交易數(shù)量對(duì)共識(shí)延遲的影響,體現(xiàn)算法性能的優(yōu)劣。實(shí)驗(yàn)控制節(jié)點(diǎn)數(shù)量為4個(gè),總共進(jìn)行50次實(shí)驗(yàn),取平均值得到2種算法的比較結(jié)果,如圖10所示。從圖10可以看出,隨著區(qū)塊大小的遞增,2種算法的總延遲時(shí)間也相應(yīng)增加,但是CPBFT算法的延遲時(shí)間始終小于PBFT算法,且CPBFT算法的總延遲增長(zhǎng)速率較慢,這說明CPBFT算法在共識(shí)運(yùn)行速度上比PBFT算法更快,能夠有效減少內(nèi)部通信開銷,提高共識(shí)效率。
圖10 2種算法的總延遲時(shí)間比較Fig.10 Comparison of total delay time of two algorithms
3.2.5 容錯(cuò)性分析
CPBFT算法容忍錯(cuò)誤節(jié)點(diǎn)的能力和PBFT算法相同,均為f=(n-1)/3。當(dāng)系統(tǒng)內(nèi)的節(jié)點(diǎn)足夠多時(shí),2種算法能容忍的錯(cuò)誤節(jié)點(diǎn)越多,當(dāng)系統(tǒng)中錯(cuò)誤節(jié)點(diǎn)的數(shù)量超過f最大值后,共識(shí)過程無法繼續(xù),系統(tǒng)陷入癱瘓。
由于CPBFT算法基于信用機(jī)制選取主節(jié)點(diǎn),參與共識(shí)的節(jié)點(diǎn)都是具有一定信用保證的節(jié)點(diǎn),因此遭遇偽造節(jié)點(diǎn)攻擊的可能性極小,相較于PBFT算法,其抵制偽造節(jié)點(diǎn)攻擊的防范性更強(qiáng)、更安全。
本文利用區(qū)塊鏈和智能合約技術(shù),設(shè)計(jì)一種知識(shí)產(chǎn)權(quán)保護(hù)模型。該模型提出一種基于信用的改進(jìn)PBFT共識(shí)機(jī)制,有效提升區(qū)塊鏈節(jié)點(diǎn)間的共識(shí)效率,并借助智能合約實(shí)現(xiàn)自動(dòng)化執(zhí)行的知識(shí)產(chǎn)權(quán)登記和轉(zhuǎn)讓協(xié)議,針對(duì)現(xiàn)階段數(shù)字作品存在的產(chǎn)權(quán)登記困難和交易混亂等問題提供有效的解決方案。實(shí)驗(yàn)結(jié)果表明,該模型在知識(shí)產(chǎn)權(quán)管控過程中具有較高的安全性和運(yùn)行效率。下一步將結(jié)合區(qū)塊鏈技術(shù)、環(huán)簽名技術(shù)等數(shù)字簽名技術(shù)對(duì)本文模型進(jìn)行優(yōu)化,以有效保護(hù)用戶個(gè)人隱私,降低環(huán)簽名對(duì)共識(shí)效率的影響。