楊雅都,孫 力
(江南大學(xué)教育信息化研究中心,江蘇無錫 214122)
近年來,虛擬貨幣——比特幣的出現(xiàn),引發(fā)了人們對以電子方式進行資產(chǎn)安全交易的區(qū)塊鏈技術(shù)的興趣[1]。區(qū)塊鏈(Blockchain)技術(shù)的核心是以密碼學(xué)為基礎(chǔ),定義信息交換和存儲的協(xié)議,能夠確保在完全公開、虛擬、電子化的環(huán)境中,各方之間所進行的交易和存儲業(yè)務(wù)防篡改、去中心化和不可撤銷[2]。從功能上看,互聯(lián)網(wǎng)是傳遞信息,區(qū)塊鏈是驅(qū)動交易。用區(qū)塊鏈的語言描述,即互聯(lián)網(wǎng)是信息鏈,區(qū)塊鏈是交易鏈。區(qū)塊鏈技術(shù)目前主要應(yīng)用于經(jīng)濟領(lǐng)域,也已出現(xiàn)了應(yīng)用于其他領(lǐng)域的若干方案。例如,物聯(lián)網(wǎng)領(lǐng)域用于存儲智能設(shè)備之間的通信信息;電子商務(wù)領(lǐng)域用于驗證產(chǎn)品的真實性;去中心化是存儲域名系統(tǒng)(DNS)相關(guān)信息等[1]。
當將純粹財務(wù)型資產(chǎn)的概念擴展到某個企業(yè)或組織的核心資產(chǎn)時,知識將被人們認為是最重要和最有價值的資產(chǎn)之一,是企業(yè)或組織保持核心競爭力的關(guān)鍵因素。與財務(wù)型資產(chǎn)類似,知識需要作為智力資產(chǎn)安全地存儲起來,必要時在組織內(nèi)各方之間共享。此外,至關(guān)重要的是追蹤知識的起源和所有權(quán),并管理其演變過程,使有關(guān)各方都能獲得知識。在線學(xué)習(xí)資源是知識的一種顯性具體表現(xiàn)形式,對于一個在線學(xué)習(xí)企業(yè)或組織而言,它可以看成是主要資產(chǎn)之一。在學(xué)習(xí)資源的生產(chǎn)、存儲、管理和使用等方面,學(xué)習(xí)企業(yè)或組織都付出了大量的人力和財力成本。
基于知識與電子資產(chǎn)之間的相似性,本文提出了一種將區(qū)塊鏈技術(shù)應(yīng)用于在線學(xué)習(xí)資源管理領(lǐng)域的探索性研究方法。
為了完成知識傳播,需要首先知道“什么”“為什么”“誰”和“什么時候”等知識產(chǎn)生和衍變過程。衍生到可電子化處理的知識產(chǎn)品,比如在線學(xué)習(xí)資源,為了能以機器可處理的格式表示清晰的、明確表述的知識類型,可用概念模型表征知識[3-4]。這種方法一方面可以實現(xiàn)顯性知識表述到機器語言的過渡,同時也充分考慮到了知識管理中的安全性,包括機密性、完整性和可用性[5]。在知識管理中應(yīng)用區(qū)塊鏈技術(shù),使得可以不通過展示實際業(yè)務(wù)流程和知識內(nèi)容,確定創(chuàng)建或修改表征知識模型的人(知道誰),確定相關(guān)模型內(nèi)容來源(知道什么),即目前流行的“零知識證明”方式。同時,模型背后所關(guān)聯(lián)的知識也可以被訪問,即可以進一步探究知識的實體(知道為什么)。通過使用區(qū)塊鏈技術(shù),表征知識模型的內(nèi)容將以防篡改和不可撤銷的方式進行存儲,包括清晰的模型內(nèi)容訪問和權(quán)限修改以及時間戳都將被有效地保存,從而可以確定訪問和修改的時間點(知道何時)。這種類型的區(qū)塊鏈將稱為知識區(qū)塊鏈,落實到知識的顯性表現(xiàn)形式,可以稱之為在線學(xué)習(xí)資源區(qū)塊鏈。
本文基于通用區(qū)塊鏈的概念、核心技術(shù)以及工作原理,結(jié)合知識表示和管理的特性,研究在線學(xué)習(xí)資源區(qū)塊鏈的概念、核心元素構(gòu)成及其基本工作原理和流程,并探討其在資源管理中應(yīng)用的可能性及基本應(yīng)用方案。
區(qū)塊鏈是一種有組織的,通過在線方式結(jié)構(gòu)化和存儲數(shù)據(jù)的方法,是一種分布式賬本技術(shù)的具體應(yīng)用形式。它本質(zhì)上是一個沒有中央集中管理器的,即去中心化的數(shù)據(jù)庫,是通過嚴格的密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的一串數(shù)據(jù)塊,每一個數(shù)據(jù)塊中包含了上一次賬本內(nèi)容、本次賬本內(nèi)容變化以及變化產(chǎn)生時間等信息,用于驗證其信息變化的有效性并生成下一個區(qū)塊。
從狹義上講,區(qū)塊鏈是一種按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連方式組合成的,并以密碼學(xué)方式保證的不可篡改和不可偽造的一種鏈式數(shù)據(jù)結(jié)構(gòu)。從廣義上講,區(qū)塊鏈技術(shù)是利用塊鏈式數(shù)據(jù)結(jié)構(gòu)驗證與存儲數(shù)據(jù),利用分布式節(jié)點共識算法生成和更新數(shù)據(jù),利用密碼學(xué)方式保證數(shù)據(jù)傳輸和訪問安全,利用由自動化腳本代碼組成的智能合約進行編程并操作數(shù)據(jù)的一種全新的分布式基礎(chǔ)架構(gòu)與計算方式[6]。
目前被廣泛接受的是區(qū)塊鏈系統(tǒng)的6 層模型,模型自下而上由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、激勵層、合約層和應(yīng)用層組成,每層分別完成一項核心功能,各層之間互相配合,實現(xiàn)一個公開的、無特定中心的共識信任機制[7]。區(qū)塊鏈具有去中心化、開放性、自治性、信息不可篡改和匿名性等特征。區(qū)塊鏈的類型可以有公有鏈、私有鏈和混合鏈等,公有鏈是分布式的,沒有任何許可權(quán)限限制,但有完善的共識機制;私有鏈則不然,對于區(qū)塊鏈的各類操作有明確的權(quán)限規(guī)則;混合鏈則介于兩者之間,結(jié)合了公有鏈的“完全去中心化”和私有鏈的“嚴格權(quán)限控制”,可以理解為“部分去中心化”。
實現(xiàn)區(qū)塊鏈所需的核心技術(shù)是密碼學(xué)哈希函數(shù)、默克爾樹(Merkle Tree)和非對稱加密系統(tǒng)。
1.2.1 密碼學(xué)哈希函數(shù)
用一個固定位數(shù)長度的隨機輸出值V 表示輸入的任意大小的消息字符串M,即V=H(M),V 稱為M 的哈希值,H(M)即M 的哈希函數(shù)。對于n 位的字符串,其哈希計算的復(fù)雜度為O(n)。它具有如下性質(zhì):①隱秘性,即有M 可以很容易算出V,而有V 不可能算出M;②碰撞阻力,即有V不可能找到另一個M’使得H(M’)=V,或者如果M 和M’相差很小,H(M)和H(M’)則完全不相關(guān);③謎題友好性,即沒有一個解決策略比只是隨機地嘗試M 取值求得給定V 更好。
通過比較信息M 不同時間點的哈希值,可以鑒別信息M 的內(nèi)容是否發(fā)生變化。
1.2.2 默克爾樹
默克爾樹又稱哈希樹(Hash Tree),是一種二叉樹,由一個根節(jié)點、一組中間節(jié)點和一組葉節(jié)點組成。最下面的葉節(jié)點包含存儲數(shù)據(jù)或其哈希值,每個中間節(jié)點是它的兩個子節(jié)點內(nèi)容的哈希值,根節(jié)點也是由它兩個子節(jié)點內(nèi)容的哈希值組成,如圖1 所示。默克爾樹可以推廣到多叉樹的情形,其特點是,子節(jié)點內(nèi)容的任何變動,都會傳遞到其父節(jié)點,直到樹根。
Fig.1 Merkle tree圖1 默克爾樹
1.2.3 非對稱加密系統(tǒng)
非對稱加密系統(tǒng)又稱公鑰加密系統(tǒng),公開密鑰與私有密鑰是一對,用公開密鑰對數(shù)據(jù)進行加密,則只有用對應(yīng)的私有密鑰才能解密;用私有密鑰對數(shù)據(jù)進行加密,則只有用對應(yīng)的公開密鑰才能解密。由于加密和解密使用兩個不同的密鑰,故稱作非對稱加密系統(tǒng)。其實現(xiàn)加密信息交換的基本過程是:甲方生成一對密鑰并將其中之一作為公開密鑰向其它方公開;得到該公開密鑰的乙方使用其對機密信息進行加密后再發(fā)送給甲方;甲方再用自己保存的另一把私有密鑰對加密后的信息進行解密。如圖2 所示。
Fig.2 Asymmetric encryption system圖2 非對稱加密系統(tǒng)
與對稱加密系統(tǒng)相比,非對稱加密系統(tǒng)由于算法復(fù)雜,其加密解密速度較慢。但由于它消除了最終用戶交換密鑰的需要,其保密性更好。
1.2.4 零知識證明
作為區(qū)塊鏈技術(shù)的一個亮點,零知識證明的基本理解是:證明者可以在不向驗證者提供任何有用信息的情況下,向驗證者證明并使其相信自己知道或擁有某一消息。零知識證明計算過程量小,雙方交換信息少;既不降低安全性,又有良好的私密性[8]。
可以通過以下事例進一步說明零知識證明的概念。A是證明者,B 是驗證者。A 要向B 證明自己擁有某個房間的鑰匙,該房間只能用鑰匙而不能用其他任何方法打開門鎖,有兩個證明方法:①A 把鑰匙給B,B 打開房間的門鎖,從而證明A 擁有該房間的鑰匙;②B 確定該房間內(nèi)有某一物體,A 用自己擁有的鑰匙打開該房間的門鎖,把物體拿出來給B,從而證明自己確實擁有該房間的鑰匙。方法②屬于零知識證明,其好處在于在整個證明過程中,B 始終不能看到鑰匙的樣子,從而避免了鑰匙的泄露。
將哈希函數(shù)、默克爾樹和非對稱加密系統(tǒng)結(jié)合在一起,可以描述區(qū)塊鏈系統(tǒng)的基本原理,尤其是其數(shù)據(jù)存儲方式。
區(qū)塊鏈上的任意區(qū)塊Bi(i>0),都包含一個哈希值,聯(lián)結(jié)了其之前的區(qū)塊Bi-1。因此,鏈的最后一個塊,稱為根塊,聯(lián)結(jié)了鏈上所有的區(qū)塊,一直可以追溯到起源塊B0。塊Bi由塊標題和數(shù)據(jù)組成,數(shù)據(jù)是默克爾樹的結(jié)構(gòu),將單個數(shù)據(jù)值作為葉節(jié)點,連接成其根哈希值MRi。塊頭由MRi和前面塊頭的哈希值H(BHi-1)組成。因此,塊Bi可以通過對其塊頭BHi執(zhí)行哈希運算,即H(BHi)=H(H(BHi-1)||MRi)加以描述。整個鏈可以由其最后一個根塊的塊頭進行概括描述。修改某一塊Bi中的任何數(shù)據(jù)都會導(dǎo)致其哈希值H(BHi)的改變,從而導(dǎo)致鏈的破壞,即塊Bi+1不再鏈接到塊Bi,因為BHi+1不再包含改變后Bi的哈希值。如果最后一個塊的塊頭哈希值保持不變,則可以認定鏈中所有數(shù)據(jù)的完整性和不變性。這使得區(qū)塊鏈非常適合以不變的方式存儲數(shù)據(jù),從而防止被篡改。
任何新塊加入到區(qū)塊鏈的過程都可以看成是嚴格執(zhí)行特定規(guī)則挖掘過程的一部分。如果要更改存儲在區(qū)塊鏈中的數(shù)據(jù),則需要因此而產(chǎn)生一個交易事務(wù),并發(fā)送給更改執(zhí)行者——礦工。交易事務(wù)包含要更改的數(shù)據(jù),以及更改發(fā)起者身份,其身份安全通過非對稱加密系統(tǒng)的數(shù)字簽名來確保。礦工記錄要存儲在區(qū)塊鏈中的新數(shù)據(jù),并檢查該數(shù)據(jù)和更改發(fā)起者的身份是否符合規(guī)則。如符合,則執(zhí)行交易事務(wù);如不符合,則拒絕交易事務(wù)。
在公有鏈中,礦工的產(chǎn)生是依據(jù)解決密碼謎題的方法隨機選擇。如果確定了礦工,其有權(quán)向區(qū)塊鏈添加數(shù)據(jù)[9]。與公有鏈相反,私有或具有許可限制的區(qū)塊鏈并不一定是分布式的。因此,區(qū)塊鏈的訪問受到限制,礦工的產(chǎn)生要對應(yīng)權(quán)限說明進行身份驗證。更有甚者,區(qū)塊鏈所有者可以定義特定的挖掘過程和生成新塊規(guī)則,包括對參與區(qū)塊鏈交互的所有身份權(quán)限進行詳細說明,以便在將數(shù)據(jù)添加到區(qū)塊鏈時,可以使用自己的規(guī)則模型。
隨著在線教育的發(fā)展,在線學(xué)習(xí)資源數(shù)量快速增長,形式靈活多樣,使得對其管理需有嚴格的管理機制和合適的IT 技術(shù)支持。區(qū)塊鏈技術(shù)為在線學(xué)習(xí)資源的管理提升提供了空間,尤其是區(qū)塊鏈的核心是確保數(shù)據(jù)在沒有可信任第三方的情況下以透明方式進行不可撤銷的、防篡改的存儲,可以從根本上改變在線學(xué)習(xí)資源在學(xué)習(xí)組織內(nèi)部和跨組織中的存儲和處理方式。
在通用區(qū)塊鏈技術(shù)基礎(chǔ)上,本文提出了在線學(xué)習(xí)資源區(qū)塊鏈的概念(簡稱資源區(qū)塊鏈),如圖3 所示。這一概念基于這樣一種假設(shè),關(guān)于在線學(xué)習(xí)資源的描述信息,如內(nèi)容、數(shù)據(jù)格式、學(xué)習(xí)時長、學(xué)習(xí)對象、創(chuàng)作者等,都可以半正式或正式的概念模型[10]形式記錄下來。同時,關(guān)于資源存儲和修改的各類規(guī)則和許可權(quán)限信息,也可以概念模型的形式進行描述。在知識信息系統(tǒng)的意義上,這些模型可以由機器算法和人工共同處理。因此,它們不僅可以作為數(shù)據(jù)交換的基礎(chǔ),同時也可作為基于機器分析和模擬的輸入信息[6]。
資源區(qū)塊鏈將數(shù)據(jù)存儲在包含經(jīng)過加密驗證信息的資源塊中。數(shù)據(jù)本身以默克爾樹的形式進行結(jié)構(gòu)化,可以有效地確保資源塊的完整性。如果對數(shù)據(jù)進行更改,則將產(chǎn)生的交易事務(wù)發(fā)送到區(qū)塊鏈,由礦工通過挖掘過程加以處理。當然,礦工將檢查要執(zhí)行的更改是否滿足定義的所有規(guī)則。
為了完整定義資源區(qū)塊鏈的概念,本文后續(xù)將詳細說明構(gòu)建概念模型所使用的建模語言、資源區(qū)塊鏈中塊的結(jié)構(gòu)、相關(guān)權(quán)限管理規(guī)則和授權(quán)委托機制,以及對于塊處理的特定挖掘過程,并進一步討論資源區(qū)塊鏈在資源管理任務(wù)中的具體應(yīng)用。
利用建模語言描述在線學(xué)習(xí)資源時,通常取決于具體建模軟件環(huán)境[11]。對于資源區(qū)塊鏈而言,其所需的建模語言是從具體技術(shù)實現(xiàn)中抽象出來的。資源相關(guān)各類對象的通用屬性,以及資源區(qū)塊鏈相關(guān)的各類規(guī)則,都可以通過建模語言基于概念模型的形式加以定義。
Fig.3 Online learning resource blockchain圖3 在線學(xué)習(xí)資源區(qū)塊鏈
資源區(qū)塊鏈實現(xiàn)的基本要求是能夠唯一地識別概念模型中的任何元素。因此,在具體建模過程中,用UUID(通用的惟一標識符)屬性標識模型類型、類以及關(guān)系。任何一個模型構(gòu)成元素的準確描述都需要有一個確定的UUID值,以區(qū)別于其他元素。對于一個具體的業(yè)務(wù)任務(wù)及其業(yè)務(wù)執(zhí)行順序,它們和類以及關(guān)系之間分別都是泛化關(guān)系。對于模型中所有的類以及關(guān)系,它們與模型類型之間分別都是聚合關(guān)系。同時,還通過from 和to 屬性進一步細化對關(guān)系的描述;通過ContainedInModel 屬性,在具體建模過程中更好地明確模型結(jié)構(gòu)。建模過程的簡單示例如圖4所示。
Fig.4 A brief example of the modeling process圖4 建模過程簡例
此外,還添加了屬性相關(guān)數(shù)據(jù)(名稱和值)的哈希值,以及包含在模型中所有對象的哈希值。在挖掘過程中,這些哈希值將以Merkle 樹的結(jié)構(gòu)計算和存儲,如圖5 所示。
對于任何基于塊的應(yīng)用,都需要確定信息是如何表示和存儲在鏈上的。定義資源區(qū)塊鏈中塊的結(jié)構(gòu)如圖6所示。
Fig.5 Merkle tree forms of various Hash value圖5 各類哈希值的Merkle 樹形式
在每個塊的底部,包含兩個Merkle 樹,一個存儲資源內(nèi)容和屬性信息,另一個存儲有關(guān)的許可權(quán)限信息。對于兩棵樹而言,它們的根哈希值是塊頭的一部分。在塊頭中,還包含前一個塊的哈希值、時間戳,以及XML 格式的資源內(nèi)容模型和許可權(quán)限模型。對于公有鏈(分布式環(huán)境中無權(quán)限模式)的操作,可以選擇使用Nonce(密碼學(xué)中的隨機數(shù))解決密碼謎題,以決定下一個向鏈添加一個新塊的挖掘過程執(zhí)行者—礦工[2]。塊頭中的所有數(shù)據(jù)(Nonce 和時間戳除外)都通過提交事務(wù)一方的私鑰加密(解密),以生成數(shù)字簽名。生成的哈希值存儲在頭部簽名中。這樣,提交方的身份確認就與一個塊聯(lián)系在一起。當解決了密碼難題,確定了礦工,礦工成功地檢查了塊中包含的信息后,添加Nonce 和時間戳值,計算整個塊的哈希值,并使用其私鑰對該哈希值進行簽名,這些值包含在塊哈希值和塊簽名中。
資源區(qū)塊鏈的一個基本特性是以非常詳細的權(quán)限許可方式指定允許誰對區(qū)塊鏈進行哪些更改。這些許可方式在權(quán)限模型中描述。權(quán)限模型是資源塊鏈中每個塊的固有部分,其結(jié)構(gòu)如圖7 所示。
本文所建立的資源區(qū)塊鏈權(quán)限模型包含3 種類型的權(quán)限:創(chuàng)建權(quán)限給定一個身份者創(chuàng)建模型、對象、關(guān)系和屬性值;刪除權(quán)限給定一個身份者刪除模型、對象、關(guān)系和屬性值;轉(zhuǎn)移權(quán)限給定一個身份者將其部分或全部權(quán)限轉(zhuǎn)移到另一個身份。
Fig.6 Resource block structure圖6 資源塊結(jié)構(gòu)
Fig.7 Permission model structure圖7 權(quán)限模型結(jié)構(gòu)
權(quán)限模型中的身份者由其公鑰表示。在資源區(qū)塊鏈的起始塊中,所有權(quán)限都被分配給區(qū)塊鏈的創(chuàng)建者。然后,其可以通過后續(xù)事務(wù)決定是否以及如何將這些權(quán)限授權(quán)委托給其他身份者。
當新的事務(wù)被發(fā)送到資源區(qū)塊鏈時,它們將被檢查是否符合上一個塊中的權(quán)限模型設(shè)置規(guī)則。對于授權(quán)資源區(qū)塊鏈(私有鏈),可由已經(jīng)過認證的礦工完成挖掘過程;對于無授權(quán)資源區(qū)塊鏈(公有鏈),可由隨機選擇的礦工完成挖掘過程。在挖掘過程中進行規(guī)則檢查的執(zhí)行過程如圖8 所示。
對于提交事務(wù)中的每個內(nèi)容模型,首先計算各類相應(yīng)的哈希值,包括對象和關(guān)系的屬性,以及一個模型中的所有對象和關(guān)系,所有對象、關(guān)系或模型和其相應(yīng)UUID 的組合;其次是組合所有這些哈希值,從而形成一個Merkle 樹,最終形成根哈希值。對于提交的權(quán)限模型,也是作同樣處理,直到形成Merkle 樹的根哈希值。
挖掘結(jié)果是,要么事務(wù)被許可,執(zhí)行所請求的更改,向資源區(qū)塊鏈添加一個新的塊,交易完成;或者,該事務(wù)被發(fā)現(xiàn)不符合權(quán)限規(guī)則,交易被取消。
通過對資源區(qū)塊鏈概念及其核心結(jié)構(gòu)的詳細描述,可以進一步探討它們在在線學(xué)習(xí)資源管理中的應(yīng)用可能。
第一個應(yīng)用領(lǐng)域是對資源演變的透明監(jiān)控。為了跟蹤以在線學(xué)習(xí)資源形式表示的知識演變,資源區(qū)塊鏈允許詳細檢索在線學(xué)習(xí)資源是如何隨時間演變的。這可以通過檢查資源區(qū)塊鏈中所有發(fā)生內(nèi)容變化的區(qū)塊、變化發(fā)生的時間點,以及檢查所有區(qū)塊內(nèi)容的完整性加以實現(xiàn)。
第二個應(yīng)用領(lǐng)域是跟蹤在線學(xué)習(xí)組織中的知識來源、所有權(quán)和關(guān)系。資源區(qū)塊鏈不僅以可靠的方式分析在線學(xué)習(xí)資源的知識結(jié)構(gòu),還可以通過其中各塊所獲得的數(shù)字簽名,驗證誰進行了哪些更改,以及誰授權(quán)該人員進行這些更改(授權(quán)委托方案),這也就實現(xiàn)了“知道誰”和“知道為什么”。
第三個應(yīng)用領(lǐng)域是證明某些資源內(nèi)容模型是否包含在資源區(qū)塊鏈的某個塊中,亦即該模型表示的資源內(nèi)容屬于某個企業(yè)或組織。通過計算給定資源內(nèi)容模型的哈希值并應(yīng)用相應(yīng)的Merkle 證明,可以驗證該資源內(nèi)容是否包含在區(qū)塊鏈表述或管理的資源中。這種證明方式針對單個塊中的內(nèi)容模型,可以在不揭示模型具體內(nèi)容的情況下實現(xiàn),體現(xiàn)了區(qū)塊鏈技術(shù)的亮點——零知識證明,可以作為支持潛在的更復(fù)雜的資源遵從性檢查的一部分。通過這種方式可以證明,向外部權(quán)威機構(gòu)證明,相應(yīng)的資源內(nèi)容屬于相應(yīng)組織,并且以規(guī)定方式被使用。例如,可以作為資源審核專家對相關(guān)資源進行審核的一部分內(nèi)容。
Fig.8 Mining execution process圖8 挖掘執(zhí)行過程
在明確資源區(qū)塊鏈基本概念、塊結(jié)構(gòu)、權(quán)限設(shè)置及分配、事務(wù)處理等各類概念和規(guī)則后,為了驗證其有效性,并證明依據(jù)資源區(qū)塊鏈概念和規(guī)則建立的在線學(xué)習(xí)資源系統(tǒng)在實際應(yīng)用中可以實現(xiàn)資源有效管理,本文創(chuàng)建了一個原型實現(xiàn)。該原型并沒有涵蓋資源區(qū)塊鏈定義的所有功能,而是作為資源區(qū)塊鏈概念的一個測試和模擬環(huán)境?;谠蛯崿F(xiàn),討論了資源區(qū)塊鏈的實現(xiàn)要素、功能性和局限性,以及進一步研究方向。
基于在許多行業(yè)和研究項目中的成功應(yīng)用,本文選擇了ADOxx 元建模平臺[12]作為實現(xiàn)的基礎(chǔ)環(huán)境。實現(xiàn)環(huán)境的核心組件是一個ADOxx 庫,由3 個模型類型組成,分別是特定的資源區(qū)塊鏈Source Blocks、業(yè)務(wù)流程(資源組成和使用)模型BPMN(業(yè)務(wù)流程建模符號,Business Process Mod?eling Notation)Model 和權(quán)限模型Permission Model。為了便于說明,所有模型類型都通過圖形符號表示。原型實現(xiàn)通過三類算法對ADOxx 庫進行了擴展,主要包括:以事務(wù)形式發(fā)送塊處理請求、挖掘產(chǎn)生新塊和驗證現(xiàn)有塊。本文自定義了一個動態(tài)鏈接庫(DLL),用以生成UUID 值、計算SHA-256 哈希值[6],同時作為與基于橢圓加密算法(ECC)的公鑰密碼系統(tǒng)開放SSL(安全套接層,Secure Socket Lay?er)庫的接口[13]。
通過包含3 個模型類型的ADOxx 庫,使用一組配對的公共—私有密匙對指定和標識區(qū)塊鏈所有者,就可以創(chuàng)建新的資源區(qū)塊鏈。在本文原型實現(xiàn)中,基本業(yè)務(wù)流程(資源組成和使用)可以使用BPMN 的任務(wù)和網(wǎng)關(guān)元素,通過順序流連接進行構(gòu)建;一旦有人發(fā)送塊處理請求時,就可以形成業(yè)務(wù)流程模型。通過創(chuàng)建公鑰和私鑰,可進行權(quán)限詳細說明并分配給特定身份者,形成權(quán)限模型。兩個模型都存儲在Merkle 樹中并給予數(shù)字簽名,挖掘過程通常由指定礦工發(fā)起。
作為原型實現(xiàn),本文在單機版環(huán)境中實現(xiàn)了一個帶有權(quán)限許可的私有資源區(qū)塊鏈。該區(qū)塊鏈只在特定范圍內(nèi)可用,只由一個礦工集中管理。資源區(qū)塊鏈原型實現(xiàn)界面掃OSID 碼可見,界面左上角是整個資源區(qū)塊鏈的結(jié)構(gòu),包括塊的構(gòu)造和前后塊之間屬性的聯(lián)系;左下角是基于BPMN 實現(xiàn)的添加了一個資源塊的基本業(yè)務(wù)流程,塊中的內(nèi)容包括資源的各類屬性及指向具體資源的指針或鏈接;右邊是權(quán)限模型。
構(gòu)建資源區(qū)塊鏈的第一步是決定使用哪種建模語言,并進行鏈的初始化。鏈所有者決定用BPMN 建模語言收集所有在線學(xué)習(xí)資源相關(guān)知識。在資源區(qū)塊鏈創(chuàng)建之初,所有的創(chuàng)建、刪除和轉(zhuǎn)移權(quán)限都分配給鏈所有者。初始區(qū)塊鏈創(chuàng)建后,以其公鑰形式作為身份標識的鏈所有者在權(quán)限模型中分配所有權(quán)限,此信息在計算權(quán)限模型的Merkle 樹后,被存儲在起始塊中,起始塊由此建立并由礦工數(shù)字簽名。在該原型實現(xiàn)中,鏈所有者將創(chuàng)建BPMN 模型的權(quán)利授權(quán)委托給員工A(Staff A)。因此,以相應(yīng)的公鑰作為身份標識的員工A,與其BPMN 模型創(chuàng)建權(quán)限一起,被添加到從前塊(起始塊)中獲得的權(quán)限模型副本中。更新的權(quán)限模型作為一個新的事務(wù)提交給礦工,鏈所有者用其私鑰對其發(fā)起的這個事務(wù)進行數(shù)字簽名;礦工檢查簽名,并依據(jù)前塊的權(quán)限模型決定是否可執(zhí)行更改。由于是鏈所有者的簽署,塊更改被接受,新的權(quán)限模型增加成為區(qū)塊鏈的一部分。擁有了新的權(quán)限后,員工A 可以創(chuàng)建BPMN 模型元素,并將它們作為新的塊處理事務(wù)提交給礦工。在收到新的事務(wù)請求后,礦工驗證提交人的身份標識和權(quán)限,驗證通過后接受更改,建立新的內(nèi)容模型。新的內(nèi)容模型和權(quán)限模型,結(jié)合塊結(jié)構(gòu)(如圖6 所示)中的其他信息,將構(gòu)成新的塊,添加到區(qū)塊鏈,形成后續(xù)塊。依此步驟,逐步完成資源區(qū)塊鏈構(gòu)建。
本文提出在線學(xué)習(xí)資源區(qū)塊鏈原型實現(xiàn)基本步驟和基本做法。實現(xiàn)的資源區(qū)塊鏈應(yīng)該具備以下功能:①依據(jù)其中所存儲的信息,對于該區(qū)塊鏈具有訪問權(quán)限的所有各方都可以公開透明地監(jiān)控資源區(qū)塊鏈的具體演變過程,包括:所關(guān)聯(lián)管理的資源如何演變、新的內(nèi)容和權(quán)限如何添加,以及添加事務(wù)的發(fā)起者身份等;②除對資源來源進行識別外,資源區(qū)塊鏈背后的授權(quán)委托方案也變得可見。例如,當區(qū)塊鏈所有者委托授權(quán)創(chuàng)建許可給某個員工時,該過程可以被精確地跟蹤;③對于通過業(yè)務(wù)流程實現(xiàn)的添加到區(qū)塊鏈中的資源相關(guān)內(nèi)容,可以在不需要揭示相關(guān)BPMN 模型具體內(nèi)容的情況下對其進行驗證。只需計算相應(yīng)內(nèi)容部分的屬性哈希值,并與存儲在最近區(qū)塊的Merkle樹進行比較,即可驗證其存在。這就是區(qū)塊鏈中的零知識證明。
本文原型實現(xiàn)著重于業(yè)務(wù)流程創(chuàng)建、塊和區(qū)塊鏈的總體構(gòu)建、創(chuàng)建權(quán)限和相關(guān)權(quán)限的授權(quán)委托等主要功能實現(xiàn),其他更多功能將在今后逐步添加實現(xiàn)。
區(qū)塊鏈依據(jù)訪問及管理權(quán)限可分為公有鏈、私有鏈、聯(lián)盟鏈(混合鏈)[14]。公有鏈是任何人都可讀取的,任何人都能發(fā)送交易且交易能獲得有效確認,其共識驗證過程是任何人都能參與其中,共識過程決定哪個區(qū)塊可以被添加到區(qū)塊鏈中并明確當前狀態(tài)。私有鏈的讀取和修改權(quán)限僅限于少數(shù)用戶,雖然說私有鏈背離了區(qū)塊鏈完全去中心化的初衷,但在某些不需要完全去中心化的應(yīng)用中,私有鏈的效率更高,即在滿足應(yīng)用要求的前提下,其實現(xiàn)速度比公有鏈快得多。聯(lián)盟鏈是指其共識過程受到預(yù)選節(jié)點控制的區(qū)塊鏈,可以看成是私有鏈的一種,只是私有程度不同,而且其權(quán)限設(shè)計要求比私有鏈更復(fù)雜[15]。
聯(lián)盟鏈比純粹的私有鏈更具可信度。例如,一個由多個機構(gòu)組成的聯(lián)盟,每個機構(gòu)都運行一個節(jié)點,規(guī)則規(guī)定每個區(qū)塊生效需要獲得其中半數(shù)以上機構(gòu)的確認。聯(lián)盟鏈或者允許任何人都可讀取,或者只受限于聯(lián)盟參與者,或走混合型路線。例如,區(qū)塊的根Hash 及其API(應(yīng)用程序接口)對外公開,API 可允許外界對區(qū)塊鏈狀態(tài)信息做有限次數(shù)的查詢和獲取。聯(lián)盟鏈可視為“部分去中心化”,所有加入的節(jié)點都在聯(lián)盟內(nèi)以有效或者有限的去中心化形式運行。
當前,隨著在線教育的蓬勃發(fā)展,眾多教學(xué)單位和專業(yè)資源開發(fā)機構(gòu)都著力于在線學(xué)習(xí)資源開發(fā)。為了避免重復(fù)建設(shè)所耗費的人力、物力,促進精品教育資源共建共享,各層面的在線資源聯(lián)盟應(yīng)運而生。其中,有政府機構(gòu)主導(dǎo)成立的,如國家精品課程資源中心主持建立的全國高校課程資源聯(lián)盟等;有主流在線教育服務(wù)機構(gòu)成立的,如奧鵬教育的MOOC 中國聯(lián)盟、網(wǎng)梯科技的百校千課共享聯(lián)盟和弘成教育的互聯(lián)時代教育資源共建共享聯(lián)盟等;有知名網(wǎng)站發(fā)起組織的,如中國教研網(wǎng)發(fā)起的全國“互聯(lián)網(wǎng)+教育教學(xué)”資源聯(lián)盟等;也有個人發(fā)起組織的,如中國網(wǎng)絡(luò)資源共享聯(lián)盟等。
在線資源聯(lián)盟通常是由一家或多家單位或個人發(fā)起,聯(lián)合國內(nèi)具有品牌影響力的資源研究部門、資源建設(shè)機構(gòu)和各類學(xué)校等教學(xué)、教研單位,共同組成的服務(wù)于學(xué)校教學(xué)和某一領(lǐng)域在線資源開發(fā)的優(yōu)質(zhì)資源共研、共建和開放共享的協(xié)作組織。在線資源聯(lián)盟的作用是,在統(tǒng)一的資源建設(shè)標準下,各聯(lián)盟成員分別提供各具特色的優(yōu)質(zhì)資源,大家在聯(lián)盟內(nèi)部可實現(xiàn)資源共享,即聯(lián)盟成員可以瀏覽和使用所有資源,取長補短。同時,聯(lián)盟在統(tǒng)一管理系統(tǒng)下,各成員負責(zé)對自己提供的資源進行維護和更新;還可以是,某一成員在獲得許可的前提下,憑借本方優(yōu)勢,對其他聯(lián)盟成員提供的資源進行更新和修正。非常明顯,聯(lián)盟鏈的模式很適合應(yīng)用于在線資源聯(lián)盟的資源管理。
在充分研究和理解區(qū)塊鏈技術(shù)的概念、核心技術(shù)和工作原理基礎(chǔ)上,本文提出了資源區(qū)塊鏈的概念,將可以通過概念模型表達的知識的具體形式——在線學(xué)習(xí)資源,以一種不可變、防篡改的方式表達出來。本文討論了資源區(qū)塊鏈總體結(jié)構(gòu)、構(gòu)建要素和基本功能,在充分考慮并選擇建模實現(xiàn)環(huán)境的基礎(chǔ)上,給出一個企業(yè)或組織內(nèi)部在線學(xué)習(xí)資源區(qū)塊鏈的原型實現(xiàn),討論其所具備的資源管理基本功能。在知識管理背景下,通過資源區(qū)塊鏈對在線學(xué)習(xí)資源管理模式可能帶來的變革進行初步探討。
本文研究還存在一些不足:例如,還沒有真正實現(xiàn)基于建模語言,并使用UUID 標識模型構(gòu)成元素的模型構(gòu)建實例化,當前本文僅假定使用的建模實現(xiàn)環(huán)境默認地處理了該問題;在ADOxx 平臺上的原型實現(xiàn)也僅包含了在挖掘過程中檢查塊一致性所需的規(guī)則,僅著力于構(gòu)建資源區(qū)塊鏈基本過程;完成的資源區(qū)塊鏈的原型實現(xiàn)是基于私有鏈類型,僅能滿足于一個企業(yè)或組織內(nèi)部的資源管理需求。
本文資源區(qū)塊鏈原型實現(xiàn)是基于單機版的私有鏈類型,僅適合單個組織內(nèi)部的資源管理應(yīng)用。下一步研究目標是如何在分布式環(huán)境下進行一個基于聯(lián)盟鏈類型的、共識過程受到預(yù)選節(jié)點控制的資源區(qū)塊鏈的原型實現(xiàn),為逐漸興起的在線教育資源聯(lián)盟資源管理模式提供有效借鑒。