夏浩飛
(嘉興職業(yè)技術(shù)學(xué)院開(kāi)放教育學(xué)院,浙江嘉興 314000)
版權(quán)管理的核心內(nèi)容是版權(quán)的確認(rèn)、轉(zhuǎn)讓與查詢,即確權(quán)、用權(quán)與維權(quán)。集中式管理是目前版權(quán)管理的主要方式,但由于權(quán)力的集中,集中式的版權(quán)管理存在確權(quán)、用權(quán)效率低,費(fèi)用高,舉證維權(quán)難度大、收益低等問(wèn)題[1-2]。同時(shí),在集中式版權(quán)管理模式中,版權(quán)數(shù)據(jù)由管理機(jī)構(gòu)獨(dú)享,使得版權(quán)信息不夠透明,安全性、可靠性也存在一定隱患。另一方面,網(wǎng)絡(luò)作品數(shù)量呈指數(shù)級(jí)增長(zhǎng),對(duì)版權(quán)認(rèn)定的效率和便捷度提出了更高要求,集中式的版權(quán)管理體系很難滿足該要求[3]。
區(qū)塊鏈技術(shù)依托分布式計(jì)算框架、可編程智能合約,具備系統(tǒng)集體維護(hù)、數(shù)據(jù)不可篡改且可追溯等技術(shù)特性,為版權(quán)管理系統(tǒng)建設(shè)提供了一種新的方式。文獻(xiàn)[4]認(rèn)為區(qū)塊鏈技術(shù)是開(kāi)辟版權(quán)登記新途徑、建立版權(quán)信任新機(jī)制、劃清版權(quán)利益分配途徑、創(chuàng)新版權(quán)商業(yè)模式的有效方式;文獻(xiàn)[5]提出可利用區(qū)塊鏈技術(shù)構(gòu)建分布式的版權(quán)管理系統(tǒng),以消弭集中式版權(quán)管理模式下因權(quán)力過(guò)度集中而產(chǎn)生的“俘獲”和“尋租”現(xiàn)象,從而有效降低版權(quán)登記、交易等環(huán)節(jié)的費(fèi)用支出;文獻(xiàn)[6]闡述了借助區(qū)塊鏈智能合約技術(shù),可降低當(dāng)事人履約成本,提高版權(quán)交易運(yùn)作效率與履約率;文獻(xiàn)[7-8]提出區(qū)塊鏈的鏈?zhǔn)浇Y(jié)構(gòu)、時(shí)間戳及數(shù)據(jù)不可篡改等技術(shù)特性可以簡(jiǎn)化舉證程序,為確定版權(quán)歸屬提供依據(jù),從而在根源上對(duì)版權(quán)進(jìn)行保護(hù),解決集中式版權(quán)管理存在的舉證難度大、收益低等問(wèn)題,維護(hù)權(quán)益人的利益。
目前,針對(duì)區(qū)塊鏈技術(shù)在版權(quán)管理領(lǐng)域應(yīng)用的研究文獻(xiàn)研究側(cè)重點(diǎn)大多集中在理論層面,對(duì)于區(qū)塊鏈技術(shù)在版權(quán)管理領(lǐng)域的落地應(yīng)用研究不多。本文在借鑒上述文獻(xiàn)研究成果的基礎(chǔ)上,以Hyperledger Fabric 為核心技術(shù),架構(gòu)了基于聯(lián)盟區(qū)塊鏈的分布式版權(quán)管理系統(tǒng),并進(jìn)行了系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),致力于推進(jìn)區(qū)塊鏈技術(shù)在版權(quán)管理領(lǐng)域的落地應(yīng)用。
區(qū)塊鏈按照開(kāi)放程度不同,分為公有鏈、私有鏈和聯(lián)盟鏈。公有鏈?zhǔn)且环N完全去中心化的區(qū)塊鏈,任何客戶端都可接入公有區(qū)塊鏈網(wǎng)絡(luò),其優(yōu)點(diǎn)是開(kāi)放程度高、隱私性好,且數(shù)據(jù)難以篡改,如比特幣[9]和以太坊[10]等。但公有鏈也存在一定問(wèn)題,如完全的匿名機(jī)制必然會(huì)導(dǎo)致交易監(jiān)管的缺失,而高度的開(kāi)放性使得公有鏈規(guī)模高速膨脹,這勢(shì)必會(huì)降低系統(tǒng)的共識(shí)效率,從而限制其應(yīng)用場(chǎng)景。公有鏈?zhǔn)且环N理想的數(shù)字貨幣架構(gòu)技術(shù),但并不適用于版權(quán)管理系統(tǒng)建設(shè)。私有鏈?zhǔn)且粋€(gè)較為封閉的區(qū)塊鏈系統(tǒng),鏈上數(shù)據(jù)的更新掌握在某個(gè)機(jī)構(gòu)手中,訪問(wèn)權(quán)限嚴(yán)格,優(yōu)點(diǎn)是交易速度快、成本低。但鑒于其開(kāi)放程度過(guò)低,私有鏈的應(yīng)用場(chǎng)景和應(yīng)用價(jià)值不高,如典型的私有鏈multichain[11]等。聯(lián)盟鏈?zhǔn)且环N介于公有鏈與私有鏈之間的區(qū)塊鏈網(wǎng)絡(luò),也是由多個(gè)組織共同建設(shè)、維護(hù)與使用的區(qū)塊鏈網(wǎng)絡(luò),如Hyperledger Fabric[12]和R3 Corda[13]等。聯(lián)盟鏈通過(guò)內(nèi)部選舉,預(yù)設(shè)節(jié)點(diǎn)完成區(qū)塊數(shù)據(jù)的共識(shí),大幅提高了系統(tǒng)共識(shí)效率,其分布式數(shù)據(jù)存儲(chǔ)機(jī)制和區(qū)塊鏈數(shù)據(jù)庫(kù)保證了數(shù)據(jù)的安全性及可追溯性,并利用權(quán)限訪問(wèn)機(jī)制保障了交易監(jiān)管的有效實(shí)施。基于聯(lián)盟鏈技術(shù)架構(gòu)的分布式版權(quán)管理系統(tǒng)既能保證版權(quán)管理系統(tǒng)的確權(quán)、用權(quán)效率,又能保障版權(quán)數(shù)據(jù)的安全、可信,提升版權(quán)信息的透明度,版權(quán)數(shù)據(jù)的舉證維權(quán)過(guò)程也變得簡(jiǎn)單、便捷,且系統(tǒng)運(yùn)行是可監(jiān)管的。
Hyperledger 項(xiàng)目是Linux 基金會(huì)主導(dǎo)的開(kāi)源項(xiàng)目,旨在以分布式記賬和共識(shí)機(jī)制為核心建立一個(gè)跨行業(yè)的企業(yè)間生態(tài)圈[14]。Fabric 是Hyperledger 最早孵化、參與成員最多的子項(xiàng)目,其架構(gòu)主要包括訪問(wèn)控制模塊、區(qū)塊鏈網(wǎng)絡(luò)、鏈上代碼和賬本4 部分,如圖1 所示。
Fig.1 Fabric framework圖1 Fabric 框架
1.2.1 訪問(wèn)控制模塊
Hyperledger Fabric 采用PKI 體系實(shí)現(xiàn)用戶密鑰與證書(shū)管理,F(xiàn)abric-CA[15]是專(zhuān)門(mén)的用戶權(quán)限訪問(wèn)控制模塊,也是獨(dú)立于Fabric 系統(tǒng)的可插拔模塊。Fabric 系統(tǒng)用戶的注冊(cè)過(guò)程包括register 和enroll 兩個(gè)步驟,如圖2 所示。首先,管理員需要在CA 中登記,登記完成的管理員接收用戶的注冊(cè)請(qǐng)求,管理員在獲取到用戶注冊(cè)的身份信息后,把新用戶信息register 到CA 中;然后,CA 返回給用戶一個(gè)enroll 密碼,用戶使用此密碼進(jìn)行enroll 操作,CA 給完成enroll 操作的用戶發(fā)放簽名秘鑰對(duì)和身份證書(shū)。秘鑰對(duì)和身份證書(shū)是用戶登錄Fabric 網(wǎng)絡(luò)、發(fā)起交易操作的憑證。
Fig.2 User registration process of Fabric圖2 Fabric 用戶注冊(cè)過(guò)程
1.2.2 區(qū)塊鏈網(wǎng)絡(luò)
交易[16]是Fabric 運(yùn)行的核心機(jī)制,區(qū)塊鏈網(wǎng)絡(luò)是處理交易的主體模塊。為保證交易的私密性,F(xiàn)abric 基于Docker 容器運(yùn)行,采用通道機(jī)制,各通道之間相互隔離,用戶可根據(jù)自身需求加入不同的業(yè)務(wù)通道。每個(gè)通道包含若干組織(org),每個(gè)組織則由若干節(jié)點(diǎn)(peer)組成,并設(shè)有各自的CA 服務(wù)。排序服務(wù)節(jié)點(diǎn)(Orderer)負(fù)責(zé)管理通道中生成的交易。通道結(jié)構(gòu)如圖3 所示。
Fig.3 Channel organization structure of Fabric圖3 Fabric 通道組織架構(gòu)
背書(shū)、排序與記賬是交易的主要過(guò)程。背書(shū)由組織的背書(shū)節(jié)點(diǎn)實(shí)施,背書(shū)策略[17]決定哪些組織的哪些節(jié)點(diǎn)參與背書(shū),只有符合背書(shū)策略要求并獲得相應(yīng)背書(shū)節(jié)點(diǎn)簽名的交易才是有效交易。記賬是交易數(shù)據(jù)寫(xiě)入各記賬節(jié)點(diǎn)賬本的過(guò)程,排序的任務(wù)是確保采用異步通訊機(jī)制的區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)記賬數(shù)據(jù)的一致性。
1.2.3 鏈碼
鏈碼包括系統(tǒng)鏈碼和用戶鏈碼。系統(tǒng)鏈碼是Fabric 的特定功能模塊,負(fù)責(zé)如鏈碼管理、通道配置、交易背書(shū)與驗(yàn)證等[18]。用戶鏈碼是實(shí)現(xiàn)用戶設(shè)定功能的程序塊,其基于Docker 容器安裝并需要進(jìn)行實(shí)例化,運(yùn)行在網(wǎng)絡(luò)節(jié)點(diǎn)上,支持Golang、Node.js、Python 等多種語(yǔ)言。
1.2.4 賬本
Hyperledger Fabric 賬本由區(qū)塊賬本(blockchain)和狀態(tài)數(shù)據(jù)庫(kù)(world state)兩部分構(gòu)成。區(qū)塊賬本存儲(chǔ)交易過(guò)程產(chǎn)生的區(qū)塊信息,且不可修改,保證了交易過(guò)程的可追溯性;狀態(tài)數(shù)據(jù)庫(kù)以key-value 形式存儲(chǔ)系統(tǒng)數(shù)據(jù),可以修改與刪除,狀態(tài)數(shù)據(jù)庫(kù)的引入方便了數(shù)據(jù)處理。
基于Hyperledger Fabric 的版權(quán)管理系統(tǒng)采用MVC(Model-View-Controller)架構(gòu)模式。Model 是處理版權(quán)交易的區(qū)塊鏈網(wǎng)絡(luò),也是實(shí)現(xiàn)版權(quán)登記、轉(zhuǎn)讓等交易過(guò)程的核心模塊;View 是面向用戶的Web 界面,接收用戶的版權(quán)登記、轉(zhuǎn)讓、查詢申請(qǐng)及注冊(cè)登錄請(qǐng)求;控制器Controller 利用Fabric SDK Go 提供的功能接口,實(shí)現(xiàn)用戶與區(qū)塊鏈網(wǎng)絡(luò)的交互,如發(fā)起交易、調(diào)用鏈碼、驗(yàn)證交易數(shù)據(jù)等,同時(shí)也負(fù)責(zé)處理頁(yè)面數(shù)據(jù)和系統(tǒng)運(yùn)行邏輯。用戶界面和控制器組成了版權(quán)管理系統(tǒng)的前端應(yīng)用程序,F(xiàn)abric-CA 負(fù)責(zé)版權(quán)系統(tǒng)用戶的身份管理?;贔abric 的版權(quán)管理系統(tǒng)架構(gòu)如圖4 所示。
Fig.4 Architecture of copyright management system based on Fabric圖4 基于Fabric 的版權(quán)管理系統(tǒng)架構(gòu)
版權(quán)登記是指向Fabric 賬本中寫(xiě)入數(shù)據(jù)的過(guò)程,控制器在獲取到用戶層提交的版權(quán)登記請(qǐng)求與登記數(shù)據(jù)后,構(gòu)造交易提案并向區(qū)塊鏈網(wǎng)絡(luò)發(fā)起版權(quán)登記交易,區(qū)塊鏈網(wǎng)絡(luò)經(jīng)過(guò)背書(shū)、排序、記賬幾個(gè)重要環(huán)節(jié),將符合條件的版權(quán)登記數(shù)據(jù)寫(xiě)入系統(tǒng)賬本,登記結(jié)果由控制層返回給用戶。系統(tǒng)版權(quán)登記流程如圖5 所示。
Fig.5 Flow of copyright registration圖5 版權(quán)登記流程
2.1.1 構(gòu)造版權(quán)登記交易提案
登錄版權(quán)管理系統(tǒng)的用戶在版權(quán)登記頁(yè)面輸入需要登記版權(quán)作品的相關(guān)信息,包括作品名稱(chēng)、類(lèi)別、作者、著作權(quán)人等,同時(shí)提交作品文件,發(fā)起登記請(qǐng)求。控制器在接收到用戶提交的版權(quán)登記請(qǐng)求后,根據(jù)當(dāng)前日期結(jié)合計(jì)數(shù)器生成版權(quán)編號(hào),將當(dāng)前日期設(shè)為版權(quán)登記時(shí)間??刂破魇褂糜脩羲借€對(duì)版權(quán)登記信息進(jìn)行簽名,同時(shí)附上用戶身份證書(shū),確定交易調(diào)用的鏈碼號(hào)、交易提案參數(shù)以及使用的通道ID 等信息,并生成交易編號(hào),打包形成版權(quán)登記交易提案,按照制定的背書(shū)策略向區(qū)塊鏈網(wǎng)絡(luò)中指定的背書(shū)節(jié)點(diǎn)提交版權(quán)登記提案。版權(quán)登記交易提案數(shù)據(jù)結(jié)構(gòu)如圖6 所示。
2.1.2 版權(quán)登記交易處理
相關(guān)背書(shū)節(jié)點(diǎn)在收到版權(quán)登記交易提案后,驗(yàn)證提案的簽名是否有效、調(diào)用者是否有寫(xiě)賬本權(quán)限,并檢驗(yàn)交易格式以及交易是否提交過(guò)。驗(yàn)證通過(guò)后,背書(shū)節(jié)點(diǎn)根據(jù)交易提案中的鏈碼號(hào)及提案參數(shù)指定的鏈碼方法,模擬執(zhí)行版權(quán)登記交易提案,生成版權(quán)登記結(jié)果的讀寫(xiě)集,并對(duì)讀寫(xiě)集進(jìn)行背書(shū)簽名。模擬執(zhí)行結(jié)果形成提案響應(yīng)proposal-Response,發(fā)回給控制器。proposalResponse 的主要內(nèi)容包括返回狀態(tài)值status、返回消息message、相應(yīng)讀寫(xiě)集與節(jié)點(diǎn)背書(shū)簽名等。
Fig.6 Data structure of copyright registration transaction proposal圖6 版權(quán)登記交易提案數(shù)據(jù)結(jié)構(gòu)
控制器在接收到發(fā)回的交易提案模擬執(zhí)行結(jié)果后,根據(jù)背書(shū)策略,驗(yàn)證是否收到滿足條件的背書(shū)數(shù)量和背書(shū)簽名,以及背書(shū)結(jié)果是否一致。若檢驗(yàn)通過(guò),則生成正式交易。正式交易的內(nèi)容包括交易提案、提案響應(yīng)值、背書(shū)結(jié)果及簽名等,由控制器提交至排序節(jié)點(diǎn)。
2.1.3 排序與記賬
排序服務(wù)節(jié)點(diǎn)按照收到交易的時(shí)間順序完成交易排序,并將這一時(shí)間段內(nèi)收到的交易生成一個(gè)區(qū)塊,交付至記賬節(jié)點(diǎn)。記賬節(jié)點(diǎn)在記賬前,首先驗(yàn)證區(qū)塊內(nèi)交易的有效性,包括交易格式、簽名有效性等,接著記賬節(jié)點(diǎn)會(huì)調(diào)用VSCC(Validator System ChainCode)鏈碼驗(yàn)證版權(quán)登記交易的合法性和背書(shū)的有效性,最后對(duì)讀寫(xiě)集數(shù)據(jù)進(jìn)行多版本并發(fā)控制MVCC(Multi-Version Concurrency Control)檢查,以避免寫(xiě)入臟數(shù)據(jù)。記賬節(jié)點(diǎn)將通過(guò)驗(yàn)證的區(qū)塊作為新區(qū)塊寫(xiě)入?yún)^(qū)塊賬本,同時(shí)更新?tīng)顟B(tài)數(shù)據(jù)庫(kù),實(shí)現(xiàn)版權(quán)信息登記,并以消息廣播的方式確保各節(jié)點(diǎn)賬本數(shù)據(jù)的同步。
現(xiàn)版權(quán)所有者在版權(quán)轉(zhuǎn)讓界面輸入版權(quán)轉(zhuǎn)讓相關(guān)信息,包括版權(quán)編號(hào)、版權(quán)受讓人,提交版權(quán)轉(zhuǎn)讓請(qǐng)求??刂破鹘邮盏桨鏅?quán)轉(zhuǎn)讓請(qǐng)求和相關(guān)參數(shù)后,發(fā)起版權(quán)轉(zhuǎn)讓交易。版權(quán)轉(zhuǎn)讓與版權(quán)登記流程基本相同,區(qū)別在于版權(quán)登記是一個(gè)數(shù)據(jù)寫(xiě)入過(guò)程,而版權(quán)轉(zhuǎn)讓則是數(shù)據(jù)更新過(guò)程。背書(shū)節(jié)點(diǎn)在收到版權(quán)轉(zhuǎn)讓背書(shū)請(qǐng)求后,依照提案參數(shù)中的版權(quán)編號(hào)從狀態(tài)數(shù)據(jù)庫(kù)中讀取指定的版權(quán)記錄數(shù)據(jù),更改版權(quán)記錄中的版權(quán)人字段信息,把更新后的版權(quán)記錄數(shù)據(jù)寫(xiě)回狀態(tài)數(shù)據(jù)庫(kù),并更新?tīng)顟B(tài)數(shù)據(jù)庫(kù)中版權(quán)數(shù)據(jù)的版本號(hào)。如ZShan 的某項(xiàng)版權(quán)記錄數(shù)據(jù)為[key:001,value:[cprID:001,cprOwner:ZShan,……],version:0],版權(quán)轉(zhuǎn)讓給LSi后,版權(quán)記錄的版權(quán)人字段信息由ZShan 變更為L(zhǎng)Si,同時(shí)版權(quán)記錄的版本號(hào)也會(huì)更新,更新后的版權(quán)記錄數(shù)據(jù)為[key:001,value:[cprID:001,cprOwner:LSi,……],version:1]。
用戶在查詢頁(yè)面輸入版權(quán)編號(hào),控制器構(gòu)造版權(quán)查詢交易提案,提案經(jīng)過(guò)背書(shū)節(jié)點(diǎn)執(zhí)行后,模擬執(zhí)行結(jié)果返回給控制器。因?yàn)椴簧婕皵?shù)據(jù)寫(xiě)入或更新,區(qū)塊鏈網(wǎng)絡(luò)不會(huì)生成交易,控制器把模擬執(zhí)行結(jié)果返回客戶端,即完成版權(quán)查詢操作。
版權(quán)交易追溯是版權(quán)認(rèn)定的關(guān)鍵。版權(quán)追溯與版權(quán)查詢的區(qū)別在于:版權(quán)查詢讀取的是狀態(tài)數(shù)據(jù)庫(kù)的數(shù)據(jù),鑒于狀態(tài)數(shù)據(jù)庫(kù)的易修改性,其舉證效力一般;版權(quán)追溯則讀取區(qū)塊賬本數(shù)據(jù),區(qū)塊賬本的不可修改特性使得追溯得到的版權(quán)交易數(shù)據(jù)更具舉證效力。Fabric 提供了兩種查詢歷史交易的方法:一是通過(guò)系統(tǒng)鏈碼QSCC,QSCC 提供了按區(qū)塊號(hào)獲取區(qū)塊數(shù)據(jù)、按交易號(hào)獲取交易數(shù)據(jù)或區(qū)塊數(shù)據(jù)等交易內(nèi)容查詢方式;二是通過(guò)Fabric 提供的GetHistoryForKey()方法查詢指定鍵的歷史交易。版權(quán)管理系統(tǒng)采用GetHistoryForKey()方法實(shí)現(xiàn)版權(quán)追溯。
在ubuntu16.04 系統(tǒng)上搭建實(shí)驗(yàn)環(huán)境,F(xiàn)abric 采用1.0版本,其他的主要軟件及版本為:Docker version 19.03.12,Docker-compose version 1.24.1,Go version 1.13.4。
架構(gòu)2 個(gè)背書(shū)節(jié)點(diǎn)、1 個(gè)排序服務(wù)節(jié)點(diǎn)與1 個(gè)CA 服務(wù)節(jié)點(diǎn)組成的區(qū)塊鏈網(wǎng)絡(luò),2 個(gè)背書(shū)節(jié)點(diǎn)模擬版權(quán)管理組織的2 個(gè)成員,版權(quán)登記、轉(zhuǎn)讓交易可在任意一個(gè)節(jié)點(diǎn)提交,背書(shū)節(jié)點(diǎn)兼記賬節(jié)點(diǎn)。背書(shū)策略設(shè)計(jì)為版權(quán)處理交易至少需得到除發(fā)起交易節(jié)點(diǎn)成員外另一個(gè)節(jié)點(diǎn)成員的背書(shū)簽名。排序算法使用solo,狀態(tài)數(shù)據(jù)庫(kù)使用couchDB。Fabric 各網(wǎng)絡(luò)服務(wù)對(duì)應(yīng)的模擬對(duì)象如表1 所示。
Table 1 Simulation object corresponding to Fabric network service表1 Fabric 網(wǎng)絡(luò)服務(wù)對(duì)應(yīng)的模擬對(duì)象
實(shí)驗(yàn)采用cryptogen 工具模擬CA 生成管理員用戶和普通用戶的身份證書(shū)、簽名秘鑰對(duì)及通訊證書(shū),系統(tǒng)模擬用戶user1 的證書(shū)及秘鑰截圖如圖7 所示。系統(tǒng)模擬用戶user1 直接寫(xiě)入main.go 文件,作為版權(quán)管理系統(tǒng)的測(cè)試用戶,并在應(yīng)用程序客戶端創(chuàng)建過(guò)程中指定user1 用戶,以簡(jiǎn)化用戶注冊(cè)登錄過(guò)程。
Fig.7 Certificate and secret key of user1圖7 user1 證書(shū)及秘鑰
版權(quán)記錄設(shè)計(jì)為結(jié)構(gòu)體類(lèi)型,名稱(chēng)為cprRecord,數(shù)據(jù)格式如下:
版權(quán)數(shù)據(jù)寫(xiě)入過(guò)程以版權(quán)編號(hào)CprID 為key 值,版權(quán)記錄cprRecord 的前7 個(gè)字段內(nèi)容為value 值,調(diào)用系統(tǒng)函數(shù)PutState(key,value)實(shí)現(xiàn)。版權(quán)數(shù)據(jù)讀取過(guò)程以CprID 為key 值,調(diào)用系統(tǒng)函數(shù)GetState(key)實(shí)現(xiàn)。Historys 用于版權(quán)數(shù)據(jù)追溯,Historys 的每條記錄由TxId 和cprRecord 構(gòu)成。
版權(quán)管理鏈碼文件命名為bqglcc.go,主要功能函數(shù)為createCpr()、transferCpr()、readCpr()和traceCpr(),分別實(shí)現(xiàn)版權(quán)數(shù)據(jù)的登記、轉(zhuǎn)讓、查詢與追溯。4 個(gè)函數(shù)算法的主要部分如下:
版權(quán)管理系統(tǒng)啟動(dòng)過(guò)程主要包括以下步驟:①編譯版權(quán)管理系統(tǒng)項(xiàng)目,生成可執(zhí)行的版權(quán)管理系統(tǒng)文件;②啟動(dòng)版權(quán)管理系統(tǒng)運(yùn)行依賴(lài)的Fabric 區(qū)塊鏈網(wǎng)絡(luò);③初始化Fabric SDK Go;④創(chuàng)建通道,將版權(quán)管理節(jié)點(diǎn)加入通道;⑤完成版權(quán)管理鏈碼的安裝與實(shí)例化;⑥創(chuàng)建通道客戶端;⑦啟動(dòng)Web 服務(wù)。版權(quán)管理系統(tǒng)啟動(dòng)過(guò)程如圖8 所示。
Fig.8 Startup process of copyright management system圖8 版權(quán)管理系統(tǒng)啟動(dòng)過(guò)程
版權(quán)管理系統(tǒng)啟動(dòng)完成后,用戶便可通過(guò)瀏覽器實(shí)現(xiàn)版權(quán)的登記、轉(zhuǎn)讓等操作。
(1)版權(quán)登記。由于用戶信息user1 已在客戶端創(chuàng)建過(guò)程中指定,user1 用戶可直接在版權(quán)登記界面輸入需要登記的版權(quán)信息,提交版權(quán)登記請(qǐng)求,如圖9 所示。登記交易提案由版權(quán)管理系統(tǒng)的peer0.org1.bqgl 節(jié)點(diǎn)發(fā)送至區(qū)塊鏈網(wǎng)絡(luò),區(qū)塊鏈網(wǎng)絡(luò)的peer1.org1.bqgl 節(jié)點(diǎn)進(jìn)行背書(shū),然后經(jīng)過(guò)排序、記賬后,登記結(jié)果信息通過(guò)瀏覽器頁(yè)面返回給用戶。版權(quán)登記交易成功反饋界面如圖10 所示。
Fig.9 Interface of copyright registration information input圖9 版權(quán)登記信息輸入界面
Fig.10 Feedback interface of successful copyright registration transaction圖10 版權(quán)登記交易成功反饋界面
(2)版權(quán)查詢。用戶在查詢界面輸入版權(quán)編號(hào)信息,提交即可。登記成功后版權(quán)編號(hào)為202102100001 的版權(quán)信息查詢結(jié)果如圖11 所示。
Fig.11 Feedback interface of copyright information query圖11 版權(quán)信息查詢結(jié)果
(3)版權(quán)轉(zhuǎn)讓。用戶在版權(quán)轉(zhuǎn)讓界面輸入版權(quán)編號(hào)202102100001 和轉(zhuǎn)讓相對(duì)人user2,提交版權(quán)轉(zhuǎn)讓請(qǐng)求。系統(tǒng)提示交易成功后,再次以版權(quán)編號(hào)202102100001 為參數(shù)進(jìn)行版權(quán)查詢,編號(hào)為202102100001 的版權(quán)記錄的版權(quán)人變更為user2。
(4)版權(quán)追溯。用戶在版權(quán)追溯界面輸入版權(quán)編號(hào)202102100001,提交追溯請(qǐng)求。系統(tǒng)通過(guò)查找鍵值為版權(quán)編號(hào)202102100001 的歷史交易記錄,實(shí)現(xiàn)追溯并返回結(jié)果,如圖12 所示。
Fig.12 Results of transaction trace圖12 交易記錄追溯結(jié)果
由圖12 可以看出,編號(hào)為202102100001 的版權(quán)記錄經(jīng)歷過(guò)兩次交易:第一次交易即版權(quán)登記交易,其交易編號(hào)與圖10 中版權(quán)登記交易成功的交易編號(hào)一致;第二次交易是版權(quán)轉(zhuǎn)讓交易,從第二次交易的版權(quán)數(shù)據(jù)記錄中可看到版權(quán)人已從user1 變更為user2。
系統(tǒng)性能測(cè)試通過(guò)設(shè)置多用戶并發(fā)條件模擬生產(chǎn)環(huán)境,檢驗(yàn)系統(tǒng)在實(shí)際應(yīng)用中的運(yùn)行穩(wěn)定性和運(yùn)行效率。測(cè)試?yán)胠oadrunner11 負(fù)載測(cè)試工具獲取系統(tǒng)版權(quán)數(shù)據(jù)登記、查詢、轉(zhuǎn)讓與追溯4 個(gè)主要事務(wù)的用戶響應(yīng)率和響應(yīng)時(shí)間。測(cè)試客戶端的軟硬件配置如下:CPU 為Inte(lR)core(TM)i3-4130,3.40GHz;RAM 為4.00GB;OS 為Windows7,32 位;瀏覽器為IE8。
測(cè)試采用錄制方式抓取版權(quán)登記、查詢、轉(zhuǎn)讓、追溯4個(gè)事務(wù)的執(zhí)行腳本,對(duì)各腳本分別進(jìn)行并發(fā)測(cè)試,設(shè)置迭代次數(shù)為1 次,并發(fā)用戶數(shù)為30,忽略用戶思考時(shí)間。測(cè)試結(jié)果如表2 所示。由測(cè)試結(jié)果可以看出,在多用戶環(huán)境下系統(tǒng)能夠保持穩(wěn)定運(yùn)行,4 個(gè)主要事務(wù)中,版權(quán)查詢效率表現(xiàn)良好,登記、轉(zhuǎn)讓、追溯事務(wù)響應(yīng)速度較查詢事務(wù)偏慢,但總體仍在可接受范圍內(nèi)。
Table 2 Test results of system’s main transactions表2 系統(tǒng)主要事務(wù)性能測(cè)試結(jié)果
本文以Hyperledger Fabric 技術(shù)框架為核心,架構(gòu)并模擬實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的基于區(qū)塊鏈網(wǎng)絡(luò)的版權(quán)管理系統(tǒng),實(shí)現(xiàn)了區(qū)塊鏈上版權(quán)信息的登記、轉(zhuǎn)讓、查詢與追溯管理。分布式的版權(quán)數(shù)據(jù)存儲(chǔ)模式不僅保障了版權(quán)數(shù)據(jù)的可靠性,而且提高了版權(quán)數(shù)據(jù)的透明度,使權(quán)力人能夠更好地?fù)碛凶约旱陌鏅?quán)數(shù)據(jù)。同時(shí),借助區(qū)塊賬本不可修改的特性,版權(quán)數(shù)據(jù)的追溯取證更具效力。基于區(qū)塊鏈的版權(quán)管理系統(tǒng)為“互聯(lián)網(wǎng)+”時(shí)代的版權(quán)管理提供了一種新思路。Hyperledger Fabric 項(xiàng)目較為復(fù)雜,且孵化時(shí)間較短,項(xiàng)目成熟度不夠,項(xiàng)目的登記、交易兩級(jí)證書(shū)系統(tǒng)[19]與PBFT 共識(shí)算法等模塊至今仍未發(fā)布,可借鑒的應(yīng)用實(shí)例也不多。本文設(shè)計(jì)的版權(quán)管理系統(tǒng)還存在不足,特別是在用戶身份管理與共識(shí)算法實(shí)現(xiàn)兩方面與實(shí)際應(yīng)用還有一定距離,將在后續(xù)研究中不斷改進(jìn)完善。