黃鄭正,張曉蝶,趙金輝,鄒 惠
(1.河北地質(zhì)大學(xué) 信息工程學(xué)院, 石家莊 050031;2.河北地質(zhì)大學(xué)網(wǎng)絡(luò)信息安全實驗室, 石家莊 050031)
知識是符合文明方向的,是人類對物質(zhì)世界以及精神世界探索的結(jié)果總和。如今知識被賦予了更多的含義,我們所指的知識是一個被新發(fā)現(xiàn)或新定義的事物的解釋?;ヂ?lián)網(wǎng)的快速發(fā)展,人們獲取新知識的途徑變多,但如何保護知識所有者的知識產(chǎn)權(quán)成為一個亟需解決的問題。知識共享這個概念的提出可以較好地解決這個問題。劉琳等[1]采用委托代理模型對顧客知識共享激勵機制進(jìn)行建模,該模型對企業(yè)之間的知識共享激勵機制的制定具有重要意義。在此基礎(chǔ)上,張艷霞等[2]考慮了員工動態(tài)激勵機制設(shè)計了知識共享模型,楊湘浩等[3]構(gòu)建了企業(yè)隱性知識共享的激勵模型??锵嫉萚4]運用演化博弈的方法研究了有限理性下逆向供應(yīng)鏈企業(yè)間的知識共享行為的動態(tài)演化過程。韓正濤等[5]采用演化博弈理論建立農(nóng)業(yè)科技協(xié)同創(chuàng)新中涉農(nóng)企業(yè)間的知識共享演化博弈模型,得出知識共享所需要花費的成本和知識共享過程中所帶來的風(fēng)險會降低涉農(nóng)企業(yè)之間知識共享的意愿,而企業(yè)之間知識互補的程度和知識共享所帶來的利潤則會增加企業(yè)之間的知識共享意愿。唐澤威等[6]基于Agent 技術(shù)構(gòu)建了供應(yīng)鏈企業(yè)合作學(xué)習(xí)模型,為供應(yīng)鏈的各個用戶之間構(gòu)建的有效知識共享機制提供較為合適的參考。
區(qū)塊鏈技術(shù)是被認(rèn)為繼移動互聯(lián)網(wǎng)后的下一代顛覆性核心技術(shù),區(qū)塊鏈技術(shù)在數(shù)據(jù)共享方面也有人作了一些研究。Lvan等[7]提出了一種基于區(qū)塊鏈安全存儲病人醫(yī)療記錄的方法,這種方法允許病人更好地訪問和控制自己的健康數(shù)據(jù),使用現(xiàn)有的有意義的使用標(biāo)準(zhǔn),授權(quán)實體接收患者數(shù)據(jù)的副本。薛騰飛等[8]基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享模型,使用醫(yī)療機構(gòu)聯(lián)盟服務(wù)器群(medical institution federate servers,MIFS)和審計聯(lián)盟服務(wù)器群(auditing federate servers,AFS)的設(shè)計并與其改進(jìn)后的股份授權(quán)證明機制(delegate proof of stake,DPOS)共識機制的有效結(jié)合,構(gòu)建了醫(yī)療數(shù)據(jù)共享的基礎(chǔ)平臺。翟社平等[9]設(shè)計了一種多中心的類型和身份的代理重加密(type-and-identity-based proxy re-encryption,TIB-PRE)方案作為區(qū)塊鏈的數(shù)據(jù)共享協(xié)議,可以有效防止用戶的數(shù)據(jù)被惡意節(jié)點進(jìn)行惡意攻擊而造成的損失,為用戶加密數(shù)據(jù)之間的共享提供了可靠的機制并由此構(gòu)建了基于區(qū)塊鏈的電子病歷共享模型。
分析可見,大多數(shù)的學(xué)者都采用博弈論的方法對知識共享的框架進(jìn)行搭建和改進(jìn);數(shù)據(jù)共享更多地用在醫(yī)療方面,對于知識共享在區(qū)塊鏈技術(shù)中使用的研究成果較少。本文中在分析實際知識共享流程的基礎(chǔ)上,基于區(qū)塊鏈技術(shù)構(gòu)建了一個切合實際的知識共享模型。結(jié)合知識的存儲方式設(shè)計了智能合約的結(jié)構(gòu)體與智能合約的實現(xiàn)算法,并在實驗中驗證了該模型的可行性、有效性。
區(qū)塊鏈技術(shù)具有高度透明、去信任、去中心化、匿名、可追溯等特性,能夠通過區(qū)塊之間分布式共識機制使節(jié)點之間無需第三方信任即可實現(xiàn)基于去中心化信用的點對點數(shù)據(jù)共享。為解決中心化機構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲不安全等問題提供了解決途徑[10]。區(qū)塊鏈系統(tǒng)一般由應(yīng)用層、合約層、激勵層、共識層、網(wǎng)絡(luò)層、數(shù)據(jù)層等6 個部分組成[11]。區(qū)塊鏈?zhǔn)且粋€鏈?zhǔn)椒植际酱鎯Y(jié)構(gòu),每一塊中包括了交易的信息以及前一塊的 hash值[12],區(qū)塊之間通過每個區(qū)塊都存儲其前一區(qū)塊的hash值使區(qū)塊之間首尾相連,若區(qū)塊信息被篡改,則當(dāng)前區(qū)塊的hash值會改變,由區(qū)塊的存儲結(jié)構(gòu)可知,當(dāng)一個區(qū)塊hash值被篡改,所有的區(qū)塊的hash值都會隨之改變,這其中的工作量巨大且不易實現(xiàn),使得區(qū)塊鏈擁有了其不可篡改的特性。區(qū)塊鏈的鏈?zhǔn)酱鎯Y(jié)構(gòu)[13]如圖1所示。
圖1 區(qū)塊鏈結(jié)構(gòu)框圖
智能合約是“執(zhí)行合同條款的計算機協(xié)議”,由Nick Szabo[14]在1994 年首次提出。2003年,Mark S.Miller 等[15]指出智能合約需要用代碼編寫,它是一段布置在區(qū)塊鏈上的會在滿足特定條件下自動執(zhí)行的程序代碼,用計算機程序來執(zhí)行。雖然智能合約被提出來的時間比較早,但是一直沒能應(yīng)用到實際問題中,直至區(qū)塊鏈的產(chǎn)生,為智能合約的發(fā)展提供了技術(shù)和平臺的支撐。
當(dāng)前,區(qū)塊鏈共識機制主要分為工作量證明(proof of work,PoW)機制[16]、權(quán)益證明(proof of stake,PoS)機制[17]和拜占庭容錯(byzantine fault tolerance,BFT)機制[18]。工作量證明是在系統(tǒng)中的每個節(jié)點都對系統(tǒng)提供自己的計算能力,能夠完成相應(yīng)的計算工作的節(jié)點就會獲得新區(qū)塊的記賬權(quán)并獲得相應(yīng)的獎勵。權(quán)益證明則是根據(jù)用戶錢包中貨幣的數(shù)目及貨幣存在的時間來確定一個新的權(quán)衡節(jié)點優(yōu)先級的度量單位,“幣齡”因此而出現(xiàn)。每個幣每天產(chǎn)生1幣齡,如你持有100個幣,這100個幣你一共持有10天,那么你的幣齡就是1 000。若此時,你發(fā)現(xiàn)了一個新的PoS塊,這個區(qū)塊的記賬權(quán)就歸你所有,與此同時你在發(fā)現(xiàn)該區(qū)塊之前所持有的所有幣齡則會被清空為0。即不管你持有多少幣齡,只要新發(fā)現(xiàn)了一個區(qū)塊,那么累計的幣齡就會清空。PoS與PoW相比,用戶發(fā)現(xiàn)新區(qū)塊的資源消耗明顯降低。在BFT機制中,若惡意節(jié)點想要做出惡意行為,其節(jié)點數(shù)必須超過節(jié)點總數(shù)的1/3,否則其惡意行為就不會發(fā)生。在PoS和BFT機制中,所有的驗證節(jié)點本身是不具有信任度的,它們之間按照“少數(shù)服從多數(shù)”的規(guī)則進(jìn)行交互[19]。
IPFS 是由網(wǎng)絡(luò)中節(jié)點構(gòu)成的一個分布式文件系統(tǒng),提供數(shù)據(jù)的永久性分布式存儲[20],按內(nèi)容尋址的塊存儲模型,由文件內(nèi)容計算出加密的哈希值[21-24]。當(dāng)要查詢一個文件時,運行著IPFS節(jié)點的計算機會詢問其所有對等點是否存在這個特定哈希值的文件,若存在,則只需輸入存儲文件時返回的hash值,IPFS系統(tǒng)就會根據(jù)文件檢索表和內(nèi)部的路由表自動查找并合并各文件塊組成原始文件[25-26],擁有該文件的節(jié)點將會返回整個文件。在IPFS網(wǎng)絡(luò)中上傳的每個文件及其所有數(shù)據(jù)塊,都會根據(jù)內(nèi)容返回唯一一個固定的散列字符串哈希指紋,也稱為內(nèi)容標(biāo)識符(content identifier,CID),上傳知識數(shù)據(jù)文件到IPFS網(wǎng)絡(luò)中,會生成該知識數(shù)據(jù)唯一的哈希值,知識數(shù)據(jù)發(fā)生任何變化,輸出的哈希值都會完全不同,由此可以判斷知識原始數(shù)據(jù)是否被篡改過。當(dāng)文件大小超過數(shù)據(jù)塊容量大小時,會被網(wǎng)絡(luò)分塊上傳[27]。區(qū)塊鏈與IPFS的特點相結(jié)合[28-31],提供了解決數(shù)據(jù)匯集面臨各類問題的可能。
IPFS具有以下優(yōu)點:① 下載速度快。它使用的BitTorrent協(xié)議,使數(shù)據(jù)在IPFS網(wǎng)絡(luò)上的傳輸速度更快。② 安全性高。它去中心化的特性,讓知識存儲更加安全,不會因為一個節(jié)點出現(xiàn)故障而導(dǎo)致數(shù)據(jù)文件無法下載或上傳。③ 低冗余。IPFS是按內(nèi)容尋址的塊存儲模型,根據(jù)內(nèi)容尋址在全局命名空間中明確地識別每個文件,降低了網(wǎng)絡(luò)存儲的冗余。
知識共享中對于知識的保護通常是用來保護知識提供者對于知識的所有權(quán),保護知識提供者的知識產(chǎn)權(quán),知識通常都是在沒有被保護的情況下被其他人使用,這對知識的提供者產(chǎn)生了較大的影響,并沒有得到作為知識原始提出者所應(yīng)得到的權(quán)益。知識的保護與共享的工作大致可以分為兩類:知識數(shù)據(jù)的上傳與下載、通過智能合約和簽名實現(xiàn)的數(shù)據(jù)的保護。如圖2所示。
圖2 數(shù)據(jù)的上傳與下載示意圖
由于區(qū)塊鏈?zhǔn)侨ブ行幕慕Y(jié)構(gòu),節(jié)點之間沒有可信的第三方,因此本文中知識提供者與知識使用者之間是沒有可信第三方的。鑒于有的知識使用者在獲取知識之后可能會惡意使用所獲得的知識,因此在知識提供者為知識使用者提供知識的有效授權(quán)及簽名之前需要對知識使用者進(jìn)行風(fēng)險信任評估,根據(jù)評估結(jié)果決定是否給予其對于知識的授權(quán)和簽名。
知識共享在當(dāng)今社會具有舉足輕重的作用,隨著國家對保護公民知識產(chǎn)權(quán)的重視,讓人們更愿意去創(chuàng)造新知識和改進(jìn)新知識,為新知識的產(chǎn)生創(chuàng)造了一個良好的法律環(huán)境。知識共享中知識的創(chuàng)造產(chǎn)生是一個自上而下的過程,這也就讓知識共享過程成為了一個去中心化且分散的過程。知識共享過程需要一個去中心化的大環(huán)境,由于區(qū)塊鏈技術(shù)具有的高度去中心化與知識共享的相對社會化的過程的理念如出一轍。因此在知識共享的技術(shù)上不再受約束,可以讓知識共享的價值最大化。由此,本文中設(shè)計了基于區(qū)塊鏈的知識共享框架,如圖3所示。
圖3 知識共享框架
框架由知識上傳與存儲、知識共享、授權(quán)驗證、智能合約與訪問控制組成。整個框架的功能如下:
知識提供者:提供知識的原始數(shù)據(jù)并將知識的原始數(shù)據(jù)上傳至IPFS集群。可以決定是否授權(quán)其他人使用其知識。
知識使用者:通過獲取的知識使用授權(quán)簽名來訪問具體知識。
IPFS:存儲原始知識數(shù)據(jù)及相應(yīng)的Hash值。知識提供者將加密后的知識和提取簽名一并上傳至IPFS,轉(zhuǎn)變?yōu)镠ash值后輸出。
聯(lián)盟鏈:存儲IPFS所生成的Hash值。執(zhí)行相應(yīng)的操作與訪問控制。
本框架各步驟說明如下:
1) 知識提供者將自己的知識原始數(shù)據(jù)及知識提取簽名上傳至IPFS網(wǎng)絡(luò)上,得到知識數(shù)據(jù)的唯一hash值,并將其上傳至聯(lián)盟區(qū)塊鏈上。同時,知識提供者、知識使用者和知識保護與共享中心這3個部分會記錄本系統(tǒng)中知識數(shù)據(jù)的使用、訪問等信息,并將記錄的信息上傳至聯(lián)盟區(qū)塊鏈中。
2) 知識使用者需要訪問知識時,會先向知識提供者請求訪問知識的授權(quán),若得到授權(quán),知識提供者會發(fā)送知識數(shù)據(jù)的驗證簽名給知識使用者。知識使用者通過得到的驗證簽名去獲取知識,若驗證簽名與存儲在IPFS網(wǎng)絡(luò)中該知識的提取簽名一致,則返回知識數(shù)據(jù)給知識使用者。
3) 知識提供者制定訪問其知識數(shù)據(jù)的智能合約與訪問控制。當(dāng)知識使用者向區(qū)塊鏈發(fā)起一個知識數(shù)據(jù)訪問請求,區(qū)塊鏈節(jié)點會驗證知識使用者的身份是否符合訪問條件,若不符合,系統(tǒng)不會執(zhí)行任何操作,否則,智能合約會自動觸發(fā),執(zhí)行知識數(shù)據(jù)訪問的操作。
盡管知識共享模型具有較高的執(zhí)行效率,對于知識的管理也有較高的安全性,但其本身也存在一些潛在的安全風(fēng)險:① 知識使用者可能在獲得授權(quán)得到知識后對知識進(jìn)行非法使用,在非法使用的過程中不受監(jiān)督。② 知識提供者對于知識使用者之間的信任是沒有第三方機構(gòu)提供信任機制的,對于知識使用者的可信程度只能依靠主觀的判斷,不能了解知識的使用者對于獲取知識后的使用情況。由于知識的使用者和知識的提供者之間是不存在任何信任度的,這便會造成非法的知識使用者去非法獲取知識并由此產(chǎn)生了不可信的服務(wù),使知識提供者和知識使用者之間的交互產(chǎn)生嚴(yán)重的安全問題。
針對上述問題,對區(qū)塊鏈的知識共享關(guān)鍵技術(shù)進(jìn)行研究。
智能合約是整個知識共享框架中最重要的部分之一,它可以使知識提供者和知識使用者之間的交互在滿足特定的條件下自動執(zhí)行,而不需要知識的使用者每次都向知識的提供者請求對知識的授權(quán)。智能合約也為知識數(shù)據(jù)的存儲服務(wù)提供了支持,在滿足智能合約的情況下可以完成知識數(shù)據(jù)的上傳、存儲與調(diào)用等操作。在模型中用戶有兩類:知識提供者和知識使用者。智能合約將知識提供者和知識使用者之間的交互操作轉(zhuǎn)換成區(qū)塊鏈中的交易,并將這些交易完整地存儲在以太坊網(wǎng)絡(luò)當(dāng)中。結(jié)構(gòu)體(struct)在智能合約中用來記錄和存儲知識共享的各種信息。在智能合約結(jié)構(gòu)體中主要包括知識數(shù)據(jù)結(jié)構(gòu)體,知識提供者數(shù)據(jù)結(jié)構(gòu)體,普通用戶(知識使用者)數(shù)據(jù)結(jié)構(gòu)體三類。
知識提供者創(chuàng)造新知識并將知識類型、知識摘要及知識產(chǎn)權(quán)的取得日期等數(shù)據(jù)一并上傳至IPFS,然后將得到的唯一的hash值記錄在知識所在的區(qū)塊鏈當(dāng)中。通過用戶之間的交互會形成相應(yīng)的區(qū)塊交易,區(qū)塊交易會觸發(fā)智能合約的交易狀態(tài)。節(jié)點達(dá)成共識后會將這些區(qū)塊交易更新到聯(lián)盟鏈的節(jié)點上,知識數(shù)據(jù)結(jié)構(gòu)體設(shè)計如表1所示。
表1 知識數(shù)據(jù)結(jié)構(gòu)體
知識提供者上傳自己的知識數(shù)據(jù)及訪問知識所需的數(shù)字簽名,系統(tǒng)為其產(chǎn)生唯一標(biāo)識ID。在知識使用者請求授權(quán)訪問知識時決定是否給予知識使用者訪問權(quán)及是否簽發(fā)相應(yīng)的數(shù)字簽名。知識提供者結(jié)構(gòu)體設(shè)計如表2所示。
表2 知識提供者結(jié)構(gòu)體
知識提供者和知識使用者之間的知識授權(quán)服務(wù)交易是智能合約功能的主要體現(xiàn),知識使用者需要提供自己的賬戶地址,發(fā)出請求授權(quán)后需要等待知識提供者是否提供數(shù)字簽名,若知識提供者提供數(shù)字簽名則使用得到的數(shù)字簽名去訪問該知識的數(shù)據(jù)。通過這個過程可以有效地保證知識授權(quán)服務(wù)的安全性,知識使用者結(jié)構(gòu)體設(shè)計如表3所示。
表3 知識使用者結(jié)構(gòu)體
在本文中所使用的智能合約都是基于Truffle框架編寫的,實現(xiàn)了知識數(shù)據(jù)在區(qū)塊鏈上被知識使用者和知識提供者進(jìn)行共享的操作。
3.4.1知識提供者上傳知識模塊
知識的提供者擁有唯一的Hash地址,可以通過調(diào)用智能合約的方法addKnowledgeToBlockchain()在區(qū)塊鏈中上傳知識的產(chǎn)生時間、知識種類、知識摘要等在內(nèi)的知識的原始數(shù)據(jù),在上傳的過程中會在以太坊中消耗一定數(shù)量的Gas,故知識的提供者在上傳知識之前要保證自己的以太坊賬戶是有一定的余額的,否則會導(dǎo)致知識原始數(shù)據(jù)上傳失敗。
3.4.2知識查詢模塊
知識的提供者和知識的使用者都可以通過知識的名稱和知識在區(qū)塊鏈中唯一的ID編號對知識進(jìn)行查詢,知識的名稱可能在區(qū)塊中會有重復(fù),但由于知識的ID編號是唯一的,所以當(dāng)使用知識ID去查詢知識的時候是不會出現(xiàn)查詢錯誤,從而保證了查詢的準(zhǔn)確性。由于查詢的過程只調(diào)用了智能合約的getKnowledge()方法,不需要對知識的數(shù)據(jù)進(jìn)行修改操作,因此沒有產(chǎn)生任何區(qū)塊鏈的交易,故不需要消耗任何Gas。
3.4.3知識溯源模塊
在知識提供者將其知識的原始數(shù)據(jù)上傳到IPFS后,IPFS返回的Hash值、知識信息、時間戳等一并被存儲到區(qū)塊鏈上。由于區(qū)塊鏈具備的防篡改和可追蹤的功能,為知識的溯源提供技術(shù)保障,在當(dāng)今社會知識被濫用的行為屢禁不止,這導(dǎo)致了很多知識提供者的知識產(chǎn)權(quán)沒有得到有效保護。在引入了區(qū)塊鏈技術(shù)的知識共享模型中,知識提供者可通過知識溯源算法1返回的Result 結(jié)果集查詢存儲在區(qū)塊鏈中當(dāng)前正在被調(diào)用的知識的數(shù)據(jù),包括知識名稱、知識提供者、知識種類、知識產(chǎn)權(quán)取得的日期、知識的摘要、取得知識使用權(quán)所需要支付的價格、知識的hash地址等知識數(shù)據(jù)。整個溯源過程同樣沒有任何交易的數(shù)據(jù),因此也不需要消耗Gas。溯源過程的智能合約算法如下:
算法1:tracebackKnowledge
Input:Knowledge ID,Knowledge hash
Output:Result
1:if knowledge.knowledgeprovider.addr == knowledge.users.sender then
2: if knowledge.knowledgeHash != knowledgeHash then
3: break;
4: else display knowledge information;
5: return ture;
6: end if
7: end if
8:end if
3.4.4知識使用者申請使用知識模塊
知識使用者申請使用知識的前提條件是其以太坊的賬戶中擁有一定數(shù)量的以太幣以供交易的過程中消耗,并且使用者不是知識提供者本身。知識使用者在申請使用知識之前需要先查詢鏈中是否有自己需要使用的知識,若有則發(fā)出使用申請,若得到知識提供者的授權(quán)并獲得相應(yīng)的數(shù)字簽名則是成功申請到了知識的授權(quán)使用,若知識使用申請被拒絕則不能訪問使用相應(yīng)的知識。知識使用者在成功獲得知識提供者的授權(quán)后通過算法2中返回的Providing Result結(jié)果集得到系統(tǒng)返回的知識提取簽名及知識數(shù)據(jù)。提供知識過程的算法如下:
算法2:provide knowledge
Input:Knowledge ID
Output:Providing Result
1:if knowledge.users.RequestAuthorization==false then
2: break;
3: else if knowledge.users.RequestAuthorization==true then
4: if knowledge.provider[knowledge.users.sender].addr==0 then
5: knowledge.provider.addr=knowledge.users.sender;
6: knowledge.users.signature=knowledge.provider.
signature;
7: return knowledgeContent;
8: end if
9: end if
10:end if
采用Python語言和IPFS集群模擬的知識共享過程中交易和區(qū)塊鏈的存儲模型,通過Python可以實現(xiàn)知識共享過程中每個用戶之間的交互行為,并將用戶提供的數(shù)據(jù)通過hash值的形式存儲在IPFS集群當(dāng)中。區(qū)塊鏈記錄了知識共享過程中用戶的操作數(shù)據(jù)。
用Python來模擬的區(qū)塊鏈創(chuàng)世區(qū)塊的創(chuàng)建,并且給予了初始值,之后知識共享在區(qū)塊鏈中的操作將會產(chǎn)生新的區(qū)塊,并且會將前一個區(qū)塊的hash值記錄在新生成的區(qū)塊當(dāng)中,再通過區(qū)塊鏈的共識算法生成新的hash值。這樣可以保證每個區(qū)塊都擁有其前一個區(qū)塊的hash值,若有其中一個區(qū)塊的hash值被惡意篡改也可以被后面的區(qū)塊發(fā)現(xiàn)。
區(qū)塊的創(chuàng)建代碼如下:
def generate_block(oldblock,bpm,address):
newblock={
"Index":oldblock["Index"]+1,
"BPM":bpm,
"Timestamp":str(datetime.now()),
"PrevHash":oldblock["Hash"],
"Validator":address
}
newblock["Hash"]=calculate_hash(newblock)
return newblock
表4為區(qū)塊創(chuàng)建的示例。
表4 區(qū)塊示例
在進(jìn)行知識共享的交易過程中,需要用戶輸入需要訪問的知識提供者的地址和自己的地址,同時需要輸入要訪問的知識的ID,這樣可以保證自己訪問的知識是自己需要訪問的知識。并且在訪問時需要得到訪問授權(quán),即是否得到了知識提供者所簽發(fā)的數(shù)字簽名,系統(tǒng)會通過本機的地址自動查詢是否獲得了數(shù)字簽名并對數(shù)字簽名進(jìn)行比對。這樣可以保證若有用戶虛假提供數(shù)字簽名可以被系統(tǒng)識別出來。
知識交易過程的部分智能合約代碼如下:
contract KnowledgeSharing{
//Knowledge users use Knowledge
function use Knowledge (uint knowledge_id,bytes 32 knowledge_catagory,uint price){
balances[msg.sender] -=price;
balances[provider] +=price;
…
transactionRecord[knowledge_id]= msg.sender;
…
} }
智能合約采用solidity語言進(jìn)行編寫,將編譯成功之后的智能合約通過客戶端部署到區(qū)塊鏈上,智能合約的部署結(jié)果如圖4所示,知識上傳過程如圖5所示,知識數(shù)據(jù)共享過程如圖6所示。
圖4 智能合約的部署
圖5 知識上傳過程
圖6 知識數(shù)據(jù)共享過程
上述實驗在網(wǎng)絡(luò)上完成,說明了知識共享在基于以太坊的區(qū)塊鏈上可以保護知識的數(shù)據(jù)安全具有可行性。與傳統(tǒng)的知識共享相比,基于區(qū)塊鏈的知識共享系統(tǒng)主要通過智能合約來部署和執(zhí)行,不需要耗費額外的人力,提高了知識共享的效率也節(jié)省了大量的人力。
提出了一種基于區(qū)塊鏈的知識共享模型,該模型是基于以太坊的一個去中心化的知識共享交易服務(wù)系統(tǒng)。知識提供者將知識的原始數(shù)據(jù)上鏈后打包進(jìn)入?yún)^(qū)塊中保證了知識數(shù)據(jù)的可追溯性,鏈下的數(shù)據(jù)存儲到IPFS集群中降低了知識交易過程的成本。整個知識共享的過程都在區(qū)塊鏈中進(jìn)行,保證了知識數(shù)據(jù)信息的不可篡改,讓交易雙方都能彼此信任。通過使用智能合約減少了知識交易過程步驟,減少了相應(yīng)的人力資源的投入。實驗結(jié)果表明:本文的知識共享的溯源方案具有可行性,鏈上數(shù)據(jù)具有可溯源、防篡改等特性。正確的使用區(qū)塊鏈技術(shù)可以大大增加2個互不相關(guān)的個體之間的信任,有助于知識共享在各個地方、各個人群中的共享。下一步將繼續(xù)完成智能合約的一些具體功能以實現(xiàn)較大規(guī)模的知識共享數(shù)據(jù)的區(qū)塊鏈管理。