張杰 安徽財(cái)經(jīng)大學(xué) 管理科學(xué)與工程學(xué)院
區(qū)塊鏈的概念于2008年底與中本聰發(fā)布在比特幣論壇上,而區(qū)塊鏈則是比特幣的核心。中本聰?shù)挠^點(diǎn)認(rèn)為目前存在的以第三方認(rèn)證為核心的交易系統(tǒng)缺乏相互信任的問(wèn)題,一旦第三方被惡意攻破,客戶端并不知道系統(tǒng)已經(jīng)失去了安全性,如果繼續(xù)交易所有的交易都會(huì)暴漏在一個(gè)非可信的環(huán)境中。同時(shí)由于中介機(jī)構(gòu)的存在會(huì)因?yàn)橹虚g商賺取差價(jià)導(dǎo)致交易成本的增加。
區(qū)塊鏈系統(tǒng)和計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)一樣也是一個(gè)分層的系統(tǒng),可以大體上分為協(xié)議層、擴(kuò)展層和應(yīng)用層。不同層級(jí)間是透明的,而現(xiàn)在大多數(shù)的區(qū)塊鏈系統(tǒng)也已為開發(fā)者提供好了協(xié)議層與擴(kuò)展層,開發(fā)者只需要通過(guò)應(yīng)用層開發(fā)出合適的程序或是合約即可。本文是通過(guò)嘗試使用小蟻Neo區(qū)塊鏈平臺(tái),并通過(guò)該平臺(tái)來(lái)開發(fā)出相應(yīng)的合約。
作為一個(gè)版權(quán)保護(hù)系統(tǒng),要針對(duì)用戶上傳上的相關(guān)文字、圖像、音視頻、二進(jìn)制文件等進(jìn)行區(qū)別、編碼、加密以及最后的聲明、廣播、同步區(qū)塊。因此,用戶上傳的文件如何鑒定與存儲(chǔ)則成為系統(tǒng)的設(shè)計(jì)核心,同時(shí)針對(duì)于區(qū)塊鏈平臺(tái)上用戶身份的真實(shí)性與文件的版權(quán)合法性也要有相對(duì)應(yīng)的應(yīng)對(duì)措施。
(一)文件的鑒定
用戶上傳的需要聲明的文件可以大體上分為兩種形式:文字和二進(jìn)制文件。對(duì)于上傳的文字信息因?yàn)檎加玫目臻g較小可以直接記錄并使用用戶的私鑰進(jìn)行加密,而對(duì)于較大的二進(jìn)制文件來(lái)說(shuō)則需要對(duì)文件進(jìn)行分割與分塊,對(duì)于每一個(gè)分塊需要記錄上一個(gè)分塊的地址信息,并且使用用戶的私鑰對(duì)于每一個(gè)分塊都進(jìn)行加密,這樣就可以解決系統(tǒng)中用戶上傳信息不同且雜亂的問(wèn)題。
(二)用戶管理
與用于數(shù)字貨幣交易的區(qū)塊鏈系統(tǒng)一樣,新建一個(gè)用戶相當(dāng)于新建一個(gè)錢包數(shù)據(jù),該用戶數(shù)據(jù)包括用戶的真實(shí)信息、賬戶地址、公鑰等基本信息,采用json文件格式進(jìn)行存儲(chǔ)。其中賬戶地址、公鑰私鑰都是在注冊(cè)的過(guò)程中系統(tǒng)分配的,在登陸的時(shí)候需要通過(guò)該json文件來(lái)授權(quán)進(jìn)入系統(tǒng)實(shí)現(xiàn)相應(yīng)的功能。用戶可以隨時(shí)維護(hù)自己的相關(guān)數(shù)據(jù)信息,但是賬戶地址和公鑰信息是不可變更的,相當(dāng)于其可以作為用戶在區(qū)塊鏈網(wǎng)絡(luò)上的一個(gè)用戶識(shí)別碼。
為保證用戶身份的唯一性,需要系統(tǒng)在生成賬戶地址和密鑰時(shí)保持隨機(jī)性和獨(dú)立性,同時(shí)要驗(yàn)證注冊(cè)者的身份證號(hào)碼與姓名的一致性。同一個(gè)用戶在真實(shí)世界和區(qū)塊鏈平臺(tái)上要做到一對(duì)一的關(guān)系,系統(tǒng)不允許同一個(gè)身份信息者注冊(cè)多個(gè)賬號(hào),防止一個(gè)人通過(guò)多個(gè)賬戶來(lái)回重復(fù)聲明文件所有權(quán)導(dǎo)致系統(tǒng)側(cè)鏈增多,降低系統(tǒng)的安全性與穩(wěn)定性。
(三)交易記錄管理
用戶可以隨時(shí)在系統(tǒng)中查看最近的交易記錄摘要。為保證系統(tǒng)的安全性,對(duì)于和自己無(wú)關(guān)的交易只能查詢到交易文件的類型和價(jià)格信息,不能對(duì)作品的內(nèi)容和交易雙方的身份進(jìn)行識(shí)別。而對(duì)于和自己有關(guān)的交易,可以通過(guò)相應(yīng)的模塊查詢到具體的交易時(shí)間、交易方、交易金額等信息,方便自身的數(shù)據(jù)管理與維護(hù)。
此在(Dasein)就是綻出的、固執(zhí)的。這樣,即使在人的固執(zhí)之中,也有神秘(das Geheimnis)在背后起作用。這種神秘即是存在的真理,只不過(guò)它在最源頭處就已經(jīng)被遺忘而反過(guò)來(lái)被當(dāng)作非本質(zhì)性的。從這種意義上講,存在的非真理比真理更古老,虛無(wú)比存在更本源,非自由比自由更基礎(chǔ)。
(四)交易流程
在交易雙方聯(lián)系好的情況下,通過(guò)系統(tǒng)查找到想交易的區(qū)塊并實(shí)現(xiàn)交易。交易的核心目標(biāo)有兩個(gè):一是完成作品所有權(quán)信息的修改、二是完成版權(quán)費(fèi)用的支付。按目前國(guó)家法律法規(guī)的規(guī)定不允許使用數(shù)字貨幣作為交易時(shí)的具體貨幣,因此我們預(yù)期通過(guò)接入支付寶或是微信支付讓第三方完成交易,區(qū)塊鏈平臺(tái)不介入其中、不收取手續(xù)費(fèi)。當(dāng)交易完成后由甲乙雙方共同確認(rèn)完成平臺(tái)開始對(duì)所有權(quán)進(jìn)行更改,并逐步同步到各個(gè)節(jié)點(diǎn)上。
(五)其他問(wèn)題
現(xiàn)實(shí)中的版權(quán)登記往往具有一個(gè)公告期,而在目前的所有區(qū)塊鏈系統(tǒng)中這是沒(méi)有的,其他節(jié)點(diǎn)不能隨意更改區(qū)塊的內(nèi)容。因此,對(duì)于冒充版權(quán)所有者上傳本不屬于他的版權(quán)作品的情況我們可以考慮在當(dāng)用戶開始在系統(tǒng)中聲明文件所有權(quán)的同時(shí),系統(tǒng)中的所有用戶均可收到相應(yīng)的合約的概要信息,由其他用戶進(jìn)行相應(yīng)的表決,對(duì)于表決不通過(guò)的文件不予以登記版權(quán)。但是這樣如果出現(xiàn)大范圍的惡意拒絕又會(huì)對(duì)系統(tǒng)的獨(dú)立性與真實(shí)性造成問(wèn)題,故如何解決登記文件版權(quán)的獨(dú)有性和真實(shí)性仍需要著重去解決。
(一)環(huán)境配置與準(zhǔn)備
本系統(tǒng)采用本地化方式嘗試部署與開發(fā),使用了四個(gè)區(qū)塊鏈節(jié)點(diǎn)部署在一臺(tái)虛擬機(jī)上。合約的開發(fā)環(huán)境為Visual Studio 2019社區(qū)版,采用.net core平臺(tái)完成合約開發(fā)。節(jié)點(diǎn)虛擬機(jī)采用VMware Workstations 15.5,對(duì)于四個(gè)虛擬節(jié)點(diǎn)的環(huán)境則使用Docker容器完成。

表1 相關(guān)環(huán)境配置
(二)創(chuàng)建Neo本地測(cè)試節(jié)點(diǎn)環(huán)境
虛擬機(jī)中采用的是ubuntu 16.04 LTS鏡像,在虛擬機(jī)軟件中添加一塊NAT網(wǎng)卡后在虛擬機(jī)中安裝好系統(tǒng)后關(guān)閉系統(tǒng)自動(dòng)更新并卸載不必要的軟件和依賴,同時(shí)將虛擬機(jī)的IP設(shè)置為靜態(tài)IP(本項(xiàng)目使用192.168.64.130)以方便管理。在虛擬機(jī)環(huán)境中安裝Docker-ce版本并將當(dāng)前用戶添加到Docker用戶組中,這樣就可以在運(yùn)行時(shí)免sudo完成相應(yīng)的操作,為以后錯(cuò)誤的處理和排查提供了便利。為提高鏡像同步速度,使用阿里云的容器鏡像加速服務(wù)為本地的Docker環(huán)境提供鏡像源加速。為了開發(fā)方便,需要關(guān)閉ubuntu系統(tǒng)的防火墻,保證相關(guān)端口的暢通。
所有的準(zhǔn)備操作完成后便可以使用Docker社區(qū)中已經(jīng)有的容器來(lái)搭建Neo的本地測(cè)試環(huán)境與測(cè)試鏈。采用社區(qū)中的neo-local容器鏡像,進(jìn)入到neo-local文件夾,在終端中輸入docker-compose up開始對(duì)應(yīng)用鏡像進(jìn)行下載與同步,等待同步好后便可以通過(guò)make start命令啟動(dòng)區(qū)塊鏈系統(tǒng)的本地測(cè)試鏈。
該Docker鏡像包含4 個(gè)共識(shí)節(jié)點(diǎn)組成的一個(gè)完整的工作網(wǎng)絡(luò),同時(shí)支持了區(qū)塊鏈瀏覽器平臺(tái)Neoscan、開發(fā)工具包Neopython和用于開發(fā)者自定義金額數(shù)量的錢包。通過(guò)瀏覽器打開http://192.168.64.130:4000/ 即可訪問(wèn)到區(qū)塊鏈瀏覽器,通過(guò)4002端口的GAS客戶端可以為自己的測(cè)試賬戶提供自定義的錢包金額。
(三)搭建區(qū)塊鏈客戶端軟件
采用Visual Studio 2019來(lái)實(shí)現(xiàn)Neo-GUI程序的二次開發(fā)和區(qū)塊合約的編寫。該程序需要使用到.NET Framework 4.7的平臺(tái)環(huán)境,以及基于Nuget的程序包。在PM窗口下通過(guò)Nuget完成Neo.SmartContract.Framework包的安裝后即可對(duì)該程序進(jìn)行編譯。
因需要連接到本地測(cè)試鏈而不是Neo的主鏈,故需對(duì)于配置文件進(jìn)行修改。在 config.json 中修改服務(wù)器的地址為 192.168.64.130,端口號(hào)為20333,并同時(shí)修改protocol.json中的SeedList為本地的IP地址,對(duì)于SystemFee全部修改成0即免費(fèi)部署和運(yùn)行所有的合約以方便后期的調(diào)試運(yùn)行。

圖1 區(qū)塊系統(tǒng)正常運(yùn)行
運(yùn)行調(diào)試后左下方的本地區(qū)塊高度和當(dāng)前總區(qū)塊高度保持一致,且和虛擬機(jī)中系統(tǒng)后臺(tái)的區(qū)塊鏈高度保持一致,驗(yàn)證了系統(tǒng)是可以正常連通的。
(四)編譯合約編譯器與合約編寫
因Neo的智能合約是通過(guò)C#的編譯器編譯為中間碼avm來(lái)實(shí)現(xiàn)的,故需要通過(guò)neoa、neoj和neon三個(gè)項(xiàng)目(分別實(shí)現(xiàn)匯編、Java、.NET平臺(tái)的編譯)來(lái)實(shí)現(xiàn)對(duì)于合約的編譯。
在Visual Studio中啟用基于.NET Core的跨平臺(tái)開發(fā)后打開neon項(xiàng)目,修改相應(yīng)的生成平臺(tái)為32位,同時(shí)勾選發(fā)布為一個(gè)獨(dú)立運(yùn)行的程序,將所需要的庫(kù)和運(yùn)行時(shí)均加入進(jìn)來(lái)實(shí)現(xiàn)脫離.Net系統(tǒng)運(yùn)行時(shí)運(yùn)行。最后選擇發(fā)布的平臺(tái)為win10-x86,將發(fā)布好的neon編譯器的目錄加入到系統(tǒng)環(huán)境變量即可實(shí)現(xiàn)隨處可用cmd運(yùn)行編譯。
通過(guò)插件NeoPlugin可以快速生成基于NEP-5的空白智能合約模板。基于該模板為此我設(shè)計(jì)了一個(gè)基于文件哈希的智能合約,主要是通過(guò)文件哈希值來(lái)描述文件區(qū)塊,對(duì)于該區(qū)塊的內(nèi)容實(shí)現(xiàn)查詢、修改所有者、刪除的智能合約功能,并通過(guò)Neo-GUI進(jìn)行部署與試運(yùn)行。因在上一步已經(jīng)修改了部署合約的相關(guān)費(fèi)用為0,故在交易的過(guò)程中相關(guān)的手續(xù)費(fèi)也不從用戶的錢包賬戶中扣除。
通過(guò)基于Neo的版權(quán)保護(hù)系統(tǒng)的設(shè)計(jì)、搭建與智能合約的編寫與實(shí)施讓我感受到了數(shù)字作品的版權(quán)保護(hù)依然任重而道遠(yuǎn)。一方面來(lái)說(shuō),版權(quán)作品的形式眾多,如何將作品正確地轉(zhuǎn)化為合適的數(shù)字作品形式依然是個(gè)問(wèn)題,同時(shí)如何正確地區(qū)分相類似或是侵權(quán)的作品也是一個(gè)難題,如果引入第三者或是其他用戶來(lái)鑒別又會(huì)破壞整個(gè)區(qū)塊鏈系統(tǒng)的完整性與可靠性。另一方面,平臺(tái)所具備的功能較規(guī)劃來(lái)說(shuō)還是比較單一,部分功能受限于技術(shù)水平和法律法規(guī)的約束而無(wú)法實(shí)現(xiàn)。但是不可否認(rèn)的是區(qū)塊鏈系統(tǒng)仍為解決版權(quán)保護(hù)問(wèn)題的一種非常獨(dú)特的解決方案,如果在國(guó)家有關(guān)部門的協(xié)調(diào)和結(jié)合下,我相信在不遠(yuǎn)的將來(lái)實(shí)體版權(quán)保護(hù)和數(shù)字版權(quán)保護(hù)的一系列問(wèn)題都會(huì)得以解決,尤其是基于區(qū)塊鏈的相關(guān)系統(tǒng)當(dāng)中。同時(shí)我也會(huì)繼續(xù)積極完善基于Neo的系統(tǒng)設(shè)計(jì),為數(shù)字版權(quán)保護(hù)提供一種可能性。