国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于區(qū)塊鏈的網(wǎng)絡邊緣資源分配方法

2020-08-19 07:00戴俊杰沈蘇彬
計算機工程 2020年8期
關鍵詞:側鏈以太提供者

戴俊杰,沈蘇彬

(南京郵電大學 計算機學院,南京 210023)

0 概述

邊緣計算[1]作為一種對云計算的補充性方案,將云計算的功能擴展到更靠近數(shù)據(jù)產(chǎn)生源的網(wǎng)絡邊緣以減輕網(wǎng)絡傳輸負擔,同時也更能滿足部分應用,如物聯(lián)網(wǎng)應用對低延遲響應的需求。早期關于邊緣計算的研究,如移動云計算(Mobile Cloud Computing,MCC)[2]主要依賴云服務、Cloudlet[3]等微型數(shù)據(jù)中心,需要部署專用計算服務器作為移動終端設備和云之間的中間層,以提供更接近終端設備的計算服務。由Cisco[4]引入的霧計算(Fog Computing,FC)擴展了中間層的范圍,用戶可以通過從網(wǎng)絡邊緣到網(wǎng)絡核心的任何連接的設備上獲取霧計算服務。同時,霧節(jié)點部署的分散性使得設備既可以由自身充當霧節(jié)點提供服務也可以作為客戶端使用霧資源[5]。近年來,研究人員引入霧計算模型[6],其將計算進一步轉移到物聯(lián)網(wǎng)環(huán)境的極端邊緣。在該模型中,大量的異構移動設備和物聯(lián)網(wǎng)設備都能夠提供某種形式的服務,以減輕霧的負擔。通過以上研究可以發(fā)現(xiàn),計算服務的形式正在從以往單一的、由龐大數(shù)據(jù)中心提供的集中式云計算服務轉向更加多元的、可以由各類可用的網(wǎng)絡閑散資源提供的分散式計算服務。針對基于對等網(wǎng)絡計算能力共享系統(tǒng)的研究,如加州伯克利大學的SETI@home項目[7]和BOINC項目[8],通過對等網(wǎng)絡共享節(jié)點間閑置的計算能力來達到執(zhí)行復雜運算的目的。但是以上項目和研究多數(shù)具有專用性(如某項科學研究)且規(guī)模有限,所使用的計算資源也較為固定,一般是個人計算機所提供的閑置處理器資源。在嘗試將這種基于對等網(wǎng)絡的計算模式應用到數(shù)量更為龐大的、分散于網(wǎng)絡邊緣且異構的閑散資源時,如何對資源進行有效、可靠且可信的管理將是一個巨大的挑戰(zhàn)。本文著重關注于對位于網(wǎng)絡邊緣的、閑散的計算資源(下文稱為資源)進行可靠和可信的分配。

目前,大多相關研究采用分布式的資源管理和調(diào)度方案[9-10],使用一個相對具有較強性能的邊緣節(jié)點,如Cloudlet充當控制器,由其負責管理地理位置接近的一群邊緣設備,接受資源請求并對其分配可用的資源,這種方式從一定程度上提高了應對大量分散和異構的資源時的資源管理效率。另外,也有研究人員[11]為了提供參與者更加穩(wěn)定的接口,在云中部署集中控制器,從全局上管理資源的可用性信息、接受資源請求并做出相應的資源分配的決策,再將具體的調(diào)度工作交由中間層節(jié)點完成,這種方法具有更穩(wěn)定且靈活的表現(xiàn)。但是以上研究中所采用的方案本質上仍是傳統(tǒng)的中心化管理方法,需要由固定的、單一的實體作為控制中心進行統(tǒng)一管理。這種模式的明顯缺陷在于:面臨單點故障風險,即一旦控制節(jié)點發(fā)生故障,在其恢復之前無法正常進行計算服務;受制于傳統(tǒng)信任模式,控制節(jié)點具有較高權限,若被惡意使用將造成參與者的損失,如濫用資源或提供惡意服務;在面對數(shù)量龐大、分布分散且異構的資源來源時,這種集中式管理方法的效率較低。

區(qū)塊鏈[12]作為比特幣系統(tǒng)的底層技術,以其對交易數(shù)據(jù)存儲的不可篡改性、可追溯性和共識機制等特點近年來受到了人們廣泛的關注。同時,隨著對區(qū)塊鏈技術研究的開展,也出現(xiàn)很多有關區(qū)塊鏈在非數(shù)字貨幣領域的應用研究[13],旨在探索區(qū)塊鏈可用的更加廣泛的應用場景。針對上述計算資源分配方案中存在的問題,本文結合區(qū)塊鏈技術探討一種基于去中心化的、可信和高效的邊緣計算資源分配方法。梳理當前區(qū)塊鏈技術發(fā)展所面臨的問題,并對其提出改進思路,設計可行的實現(xiàn)方案。不同于中心化資源分配方案中以單一控制節(jié)點為中心的結構設計,本文在基于區(qū)塊鏈的、去中心化的方案中對資源管理的總體結構做出合理的調(diào)整和設計,確定涉及參與方進行交互以實現(xiàn)資源分配。為達到可信的資源分配的目的,利用區(qū)塊鏈公用賬本的本質,將用于資源分配中信任管理的關鍵數(shù)據(jù)記錄到賬本,使得用戶可以根據(jù)所記錄的數(shù)據(jù)進行操作。基于現(xiàn)有的以太坊區(qū)塊鏈平臺及其支持的智能合約技術,設計本文方法的實現(xiàn)方案。同時,針對目前區(qū)塊鏈技術的性能瓶頸問題,提出基于以太坊平臺的側鏈擴容方案,以提高系統(tǒng)運行效率。

1 相關工作

1.1 區(qū)塊鏈技術

區(qū)塊鏈技術最初是作為比特幣[14]的底層技術開始逐漸為人們所知。在比特幣系統(tǒng)中,區(qū)塊鏈技術被用于存儲在對等網(wǎng)絡中傳播的交易信息,而這些交易信息確定了系統(tǒng)中存在的數(shù)字貨幣的數(shù)量及其歸屬情況。礦工作為區(qū)塊鏈的維護者,可以由任何參與者擔任。這些礦工在網(wǎng)絡中收集并驗證交易,同時將通過驗證的交易信息組裝成區(qū)塊,并以Merkle樹形式組織交易信息,將Merkle樹根值作為交易信息的唯一標識放入?yún)^(qū)塊頭,任何對交易信息甚至是交易信息存儲順序的改動都將引起Merkle樹根值的變化,從而使得區(qū)塊內(nèi)容不一致。每個區(qū)塊的區(qū)塊頭中都包含上一個區(qū)塊的區(qū)塊頭信息的哈希值,一個個區(qū)塊被有序地鏈接在一起,區(qū)塊鏈結構如圖1所示。

圖1 區(qū)塊鏈結構Fig.1 Blockchain structure

為保證“鏈”內(nèi)容的一致性,區(qū)塊鏈技術使用了分布式共識機制,如比特幣使用的工作量證明(Proof of Work,PoW)的共識機制。每個區(qū)塊通過在區(qū)塊頭中放入一個一次性數(shù),使得區(qū)塊頭的哈希值不大于某個目標值,從而成為一個合法區(qū)塊。為此,競爭者不斷嘗試不同的一次性數(shù),而這往往需要巨大的算力資源來實現(xiàn),這使得成功篡改某個區(qū)塊中的內(nèi)容的難度隨著塊數(shù)量的增加而呈指數(shù)級上升。從本質上講,共識機制的作用即在于將用于保證區(qū)塊鏈這個公共賬本的內(nèi)容的一致性而進行的一致性投票與現(xiàn)實行為或者物質資源聯(lián)系起來,其最初的目的是為了防御女巫攻擊(Sybil Attack)。

隨著區(qū)塊鏈的發(fā)展,出現(xiàn)了更多成熟且擁有不同用途的區(qū)塊鏈系統(tǒng)。針對不同的區(qū)塊鏈系統(tǒng),研究人員提出了更多不同的應用于區(qū)塊鏈系統(tǒng)的共識機制,如權益證明(Proof of Stake,PoS)機制以及各類拜占庭容錯(Byzantine Fault Tolerance,BFT)機制[15]等。以太坊[16]是一個總體上類似于比特幣系統(tǒng)的區(qū)塊鏈系統(tǒng),其最大的不同在于其支持更加復雜的可執(zhí)行腳本,一般被稱為“智能合約”,支持由圖靈完備的編程語言編寫。使用智能合約將一些簡單的業(yè)務邏輯以合約形式部署到區(qū)塊鏈,由以太坊交易觸發(fā)執(zhí)行。另外一個較為流行的平臺是超級賬本(Hyperledger)的Fabric[17],它是聯(lián)盟鏈中的典型代表,多用于企業(yè)間的項目,其同樣支持類似于智能合約的可執(zhí)行腳本,稱為鏈碼(Chain Code)。

但是,就目前區(qū)塊鏈的研究現(xiàn)狀而言,要真正實現(xiàn)廣泛而實際的應用,仍面臨諸多關鍵挑戰(zhàn)和技術瓶頸。其中,最為突出的就是區(qū)塊鏈的交易吞吐量和交易速率問題,在業(yè)內(nèi)也被稱為“可擴展性”問題[18]。該問題的核心指標通常使用每秒交易數(shù)(Transaction Per Second,TPS)來表示。一般地,比特幣的TPS可以達到7,以太坊在經(jīng)過幾次性能提升后這一數(shù)值范圍可以達到30~40。這些性能表現(xiàn)與Visa等目前主流的中心化支付系統(tǒng)仍無法相比。對于可擴展性問題,其最大的成因來自于目前區(qū)塊鏈技術對共識機制所持的保守和謹慎的態(tài)度。尤其是在比特幣和以太坊這一類涉及大數(shù)額資金轉移的數(shù)字貨幣系統(tǒng)中,一個強共識機制被看作是保證系統(tǒng)正常運轉的核心要素。因此,在該類系統(tǒng)中,每一筆交易都需要經(jīng)過較長時間的驗證和確認后才會被視為合法有效。

目前,有較多研究團隊都在積極探索并提出相應的解決方案[19],以應對區(qū)塊鏈的可擴展性問題。這些解決方案一般可以分為兩類,第1類是通過直接修改區(qū)塊鏈設計的鏈上解決方案,簡單的如此前比特幣系統(tǒng)出現(xiàn)的硬分叉,就是因為一部分用戶決定上調(diào)區(qū)塊大小限制而導致的,其目的為增加比特幣交易的吞吐量。還有如康奈爾大學團隊針對比特幣系統(tǒng)提出的比特幣-NG[20],通過升級比特幣使用的PoW算法,縮短挖礦和確認區(qū)塊的時間,另外還有以太坊社區(qū)所提出的分片技術[21],其將整個以太坊網(wǎng)絡分割成多個“宇宙”,其中所包含的交易可以由不同驗證者同時進行處理。第2類則是鏈下解決方案,在不改變現(xiàn)有主鏈設計的前提下,在其外實現(xiàn)擴容,如比特幣中的閃電網(wǎng)絡[22]和側鏈[23]技術以及以太坊所提出的狀態(tài)通道[24]。這一類解決方案的核心思想主要是在不改變主鏈設計的前提下,通過其他渠道快速進行交易,通過定時向主鏈同步交易數(shù)據(jù),在享受底層區(qū)塊鏈帶來安全性的同時,提高交易吞吐量。

基于以上對區(qū)塊鏈技術的分析,不難發(fā)現(xiàn)區(qū)塊鏈本質上是一個公用賬本,通過參與者對賬本內(nèi)容的共同維護來實現(xiàn)去中心化的信任管理。本文利用區(qū)塊鏈實現(xiàn)一種去中心化、可信的邊緣計算資源分配方法。同時,針對區(qū)塊鏈目前仍存在的可擴展性問題,提出面向資源分配的側鏈解決方案?;谝蕴黄脚_以及利用智能合約對分配方法進行實現(xiàn),并且使用以太坊的私有鏈網(wǎng)進行仿真實驗。

1.2 基于區(qū)塊鏈的計算資源管理

目前,研究人員正著力于探索區(qū)塊鏈技術在去中心化計算資源管理上的潛力。其中最為突出的基于區(qū)塊鏈的、去中心化的計算服務平臺,如iExec[25]和Golem[26],旨在通過使用基于區(qū)塊鏈的資源管理和財務激勵,將一切可能的用戶設備包括個人電腦、私人服務器甚至是整個數(shù)據(jù)中心在一個邏輯層面協(xié)同工作,以提供較強的計算能力來滿足用戶處理復雜計算任務和應用的需求。另外,還有文獻[27]提出的SmartEdge,即基于以太坊的邊緣計算智能合約,提供低成本、低開銷的計算資源管理,使物聯(lián)網(wǎng)設備可以與邊緣計算節(jié)點自動交易以請求計算卸載服務。EdgeChain[28]是一種基于區(qū)塊鏈的邊緣計算架構,其建立了一個成本和定價模型,以優(yōu)化跨多個移動網(wǎng)絡運營商的應用程序布局,使得提供服務的移動網(wǎng)絡運營者可以得到報酬以激勵其繼續(xù)提供計算能力。

上述大部分利用區(qū)塊鏈技術管理分散計算資源的方案,本質上仍是利用了基于區(qū)塊鏈的虛擬貨幣系統(tǒng)作為結算手段來激勵資源共享行為,但對于如何利用區(qū)塊鏈技術實現(xiàn)去中心化的可信資源分配,未進行深入和具體的研究和設計。另外,以上研究大多基于以太坊平臺,本質上是運行在以太坊平臺上的去中心化應用(Decentralized Application,DApp),缺少獨立于現(xiàn)有區(qū)塊鏈平臺的、系統(tǒng)性研究的支撐。本文旨在設計一種獨立于現(xiàn)有平臺的、基于區(qū)塊鏈的、去中心化的可信邊緣計算資源分配方法。

2 基于區(qū)塊鏈的邊緣計算資源分配方法

2.1 資源管理結構

對于邊緣計算資源分配方法的總體結構設計,不同于圖2(a)所示的一般中心化方案結構,其中所涉及工作都由單一的控制實體負責,雖然可能會設置中間層來負責與底層終端設備的直接交互工作,但是本質上仍是中心化的管理方案,不能避免上文提到的有關中心化方案所面臨的問題。在本文方法的設計中,如圖2(b)所示,所有參與者都通過對等網(wǎng)絡,以點對點通信的方式進行交互來完成資源分配工作。為了保證工作的順利進行和可信資源的分配,需要由網(wǎng)絡中所有的參與者共同維護一個賬本。賬本用于記錄有關資源分配的關鍵信息,記賬的工作由系統(tǒng)中的管理節(jié)點負責,而管理員本身可以由任何有能力的參與者擔任,其記賬權根據(jù)共識協(xié)議而非其固有身份屬性決定。因此,本文方法是完全的去中心化的方法。

圖2 邊緣計算資源分配方法的總體結構Fig.2 Overall structure of edge computing resource allocation method

本文方法中的參與者主要包括3種角色,分別是資源提供者、資源請求者和管理員,其中,資源提供者是指擁有空閑計算資源的邊緣設備,其參與目的在于貢獻空閑資源。為此,其根據(jù)自身資源情況向網(wǎng)絡中廣播資源發(fā)布消息(Resource Announcement Message),消息描述了資源的可用性信息;資源請求者一般指擁有無法獨立完成的計算任務的邊緣設備,參與的目的在于為計算任務的順利執(zhí)行而請求資源協(xié)助。為此,其通過網(wǎng)絡收集上述資源信息,并合法地對可用資源發(fā)出請求,即資源請求消息(Resource Request Message);管理員類似于比特幣系統(tǒng)中的“礦工”,負責收集和驗證網(wǎng)絡中的資源請求消息,而資源請求消息則類似于比特幣系統(tǒng)中的“交易”,通過驗證的“交易”被打包成區(qū)塊并發(fā)布到網(wǎng)絡中,接受其他節(jié)點的驗證。當區(qū)塊被其他節(jié)點接受并加入到最新區(qū)塊鏈的末端,即代表全網(wǎng)根據(jù)其中所包含的“交易”內(nèi)容達成共識,實現(xiàn)資源分配。記錄的“交易”信息指示了資源分配關系,各參與者將根據(jù)這些信息進行下一步操作。

關于參與者的身份驗證,本文引入一般區(qū)塊鏈系統(tǒng)所普遍采用的非對稱加密體系,為每個加入到網(wǎng)絡的參與者分配公/私密鑰對,公鑰用作身份標識,私鑰生成數(shù)字簽名用于驗證身份的真實性。

2.2 資源分配與交易

如2.1節(jié)所述,在本文方法的設計中,“交易”本質上為在網(wǎng)絡中傳播的資源請求消息,當這類“交易”信息經(jīng)管理員驗證并記錄到區(qū)塊鏈中時,意味著資源分配的完成,而“交易”信息指示了資源分配關系。具體地,資源請求消息由資源請求者對帶有資源提供者簽名的資源發(fā)布消息及其欲請求的資源量信息再次簽名來完成。其中資源發(fā)布消息由資源提供者簽名并發(fā)布,消息包含了資源的可用性信息,具體如下:

Provider:資源提供者身份標識;

Volume:資源提供者可以提供的資源總量;

startTime:資源可用開始時間;

endTime:資源可用結束時間;

Timestamp:消息發(fā)布時間戳;

Sign:數(shù)字簽名,用于確認提供者身份。

當資源請求者在網(wǎng)絡中收集到這一類資源發(fā)布消息時,其根據(jù)自身所需,針對指定的資源發(fā)出資源請求消息,即本文方法中的“交易”,具體包含:

resourceInfo:所請求資源信息,即上文中由資源提供者發(fā)布的完整的資源發(fā)布消息,這里簡單使用一條字段代指;

Requester:資源請求者身份標識;

Volume:請求者所請求的資源量;

Timestamp:交易發(fā)布時間戳;

Sign:數(shù)字簽名,用于確認請求者身份。

如上所述,資源請求消息作為“交易”由資源請求者發(fā)布并在網(wǎng)絡中傳播。與此同時,管理員在網(wǎng)絡中收集并驗證這一類“交易”,其驗證工作具體如下:

1)通過請求者的簽名驗證消息內(nèi)容的真實性;

2)通過消息中資源信息部分所包含的資源提供者的簽名驗證所請求資源的真實性;

3)回溯區(qū)塊鏈,檢查是否已有包含此消息的區(qū)塊存在,避免重復打包;

4)根據(jù)消息發(fā)布時間戳和所請求資源的可用時間范圍信息,判斷該請求的有效性,資源提供者無法在時間限制范圍之外的時間提供資源;

5)回溯區(qū)塊鏈,遍歷所有以往對資源發(fā)出的其他請求信息,計算并判斷其目前剩余的可用資源總量是否仍滿足本次交易中請求者所請求的資源量,避免資源的過度分配。

對于通過驗證的資源請求,管理員將其加入正在組裝的區(qū)塊中,根據(jù)共識協(xié)議,一旦獲得出塊權便將區(qū)塊發(fā)布到網(wǎng)絡。具體的區(qū)塊的構造如圖3所示,基本與比特幣系統(tǒng)中對區(qū)塊的構造類似。

圖3 區(qū)塊組成Fig.3 Block composition

以假設使用類似于比特幣工作量證明的共識機制為例,管理員在收集和驗證網(wǎng)絡中的交易信息的同時,將通過驗證的交易組裝成區(qū)塊,并不斷嘗試一次性數(shù)(Nonce),一旦包含該一次性數(shù)的區(qū)塊頭的哈希值小于規(guī)定目標值(Target),管理員將該區(qū)塊廣播。其他管理員接收并對區(qū)塊進行如下驗證:1)檢查區(qū)塊引用的上一個區(qū)塊是否有效;2)檢查區(qū)塊的時間戳是否比上一個區(qū)塊大;3)檢查區(qū)塊的工作量證明是否有效;4)檢查區(qū)塊所包含的交易的合法性。

若驗證通過,則管理員將接受該區(qū)塊,將其加入本地區(qū)塊鏈并在其后嘗試制造新塊,即視該塊的區(qū)塊頭哈希值為新區(qū)塊應包含的父區(qū)塊哈希值。至此,區(qū)塊中所包含的請求信息成功被記錄到區(qū)塊鏈并且被認為是可信的,這意味著資源分配的實現(xiàn)。根據(jù)鏈上所記錄信息,當資源請求者向資源提供者發(fā)出資源訪問請求時,后者可以根據(jù)前者所提供的鏈上信息索引及其身份標識驗證該訪問請求的合法性。若為合法訪問,則資源提供者必須響應,并提供相應的計算資源。本文方法的研究范圍為:從參與者發(fā)布資源和請求消息,到管理員驗證并將合法的請求消息作為“交易”記錄到區(qū)塊鏈,最后資源提供者根據(jù)鏈上信息對來自資源請求者的資源訪問進行合法性驗證為止。至于具體的資源訪問過程及其后一系列操作屬于訪問控制和其他研究領域,暫不在本文方法的研究范圍之內(nèi)。在本文方法的仿真實現(xiàn)中,僅需簡單模擬相關的驗證過程以證明所設計方法的可行性和正確性即可。

2.3 方法分析

本文方法擺脫中心化模式的做法,將資源分配的工作分散,由參與者自行通過對等網(wǎng)絡互相通信來完成,以此擺脫傳統(tǒng)信任模式和單點故障所帶來的不利影響。同時使用區(qū)塊鏈技術,記錄有關資源分配的關鍵信息,保證了資源分配的可信和可靠。

在本文方法中,所有資源請求及其中所包含的資源信息都必須通過其他節(jié)點的驗證后記錄到區(qū)塊并得到全網(wǎng)共識,區(qū)塊隨時間不斷累加且有序鏈接,對其中任何一個區(qū)塊內(nèi)的任何數(shù)據(jù)任何修改都會影響該區(qū)塊以及鏈接在其后的所有區(qū)塊內(nèi)容的變化。因此,區(qū)塊鏈技術保證了資源分配過程中相關信息的可信和安全存儲。

在保證資源分配有關信息的可信存儲的基礎上,資源提供者可以根據(jù)區(qū)塊鏈上記錄的相關信息,驗證來自其他參與者資源訪問請求的合法性。以此,可以避免參與者對資源的非法訪問和過度使用。

由于多數(shù)參與者都為資源受限的邊緣設備,管理員為了驗證、記錄并維護資源請求消息,需要保存完整的區(qū)塊信息,而其余參與者只是利用了查詢功能獲取鏈上數(shù)據(jù)來進行一些驗證工作。因此,在本文方法中,除了管理員作為全節(jié)點需要保存完整的區(qū)塊內(nèi)容外,其他的參與者只需運行輕節(jié)點,即僅存儲區(qū)塊頭信息。如當一個輕節(jié)點用戶想要驗證某個資源請求的合法性時,其可以從任意一個管理員處獲取Merkle Proof來進行驗證,而無需保存完整的區(qū)塊鏈副本。以圖3的區(qū)塊結構為例,其中的第1個資源請求(編號為0)的Merkle Proof即為“哈希值1”和“哈希值23”。具體驗證方法如下:

1)根據(jù)該資源請求消息記錄計算出其哈希值(哈希值0)。

2)將哈希值0與Merkle Proof(哈希值1)拼接并算出新的哈希值(哈希值01)。

3)將哈希值01與Merkle Proof(哈希值23)拼接算出最終的根哈希值。

4)將算出的根哈希值與自己保存的塊頭信息中的根哈希比對來判斷其真實性。

因此,這種簡單驗證的方法可以增強本文方法的可行性。

3 邊緣計算資源分配的實現(xiàn)

3.1 實現(xiàn)架構

為實現(xiàn)本文基于區(qū)塊鏈的邊緣計算資源分配方法,需要解決3個問題。首先,如何實現(xiàn)底層區(qū)塊鏈網(wǎng)絡的問題;其次,如何實現(xiàn)參與者對于資源和資源請求信息的發(fā)布及其有效存儲的問題;最后,為了提高系統(tǒng)的可用性,使其滿足實際應用的要求,如何提高資源請求處理的效率,提高系統(tǒng)吞吐量。針對上述問題,本文設計了基于以太坊平臺及其所支持側鏈技術的實現(xiàn)方案。該方案主要實現(xiàn)了3個功能,分別為資源和資源請求信息的發(fā)布、對資源請求的驗證和存儲以及基于鏈上所存儲信息的相關驗證功能,并且配以可視化的前端頁面設計,方便用戶使用以上功能。具體的系統(tǒng)參與者操作過程如圖4所示。

圖4 系統(tǒng)參與者操作過程Fig.4 Operation process of system participant

在實際部署和使用智能合約時,利用側鏈技術將所設計智能合約部署在以太坊主鏈之外,即在側鏈上運行智能合約,以擺脫以太坊主鏈對使用效率的限制,大幅提高系統(tǒng)吞吐量,并且可以有效降低成本。實現(xiàn)架構主要由以太坊主鏈網(wǎng)絡、以太坊側鏈網(wǎng)絡、智能合約和應用程序前端組成,如圖5所示。

圖5 實現(xiàn)架構Fig.5 Implementation architecture

首先依賴以太坊平臺可以實現(xiàn)底層區(qū)塊鏈網(wǎng)絡的搭建,各參與節(jié)點可以通過以太坊客戶端(如Go-ethereum,Get)參與到網(wǎng)絡中,實現(xiàn)對各項功能的操作,并參與到區(qū)塊鏈網(wǎng)絡的維護中。

其次以太坊支持圖靈完備語言編程的智能合約(一種持久性的自動執(zhí)行腳本)。使用智能合約,一方面可以將所涉及的操作流程以代碼形式寫入智能合約,用戶通過以太坊交易觸發(fā)智能合約執(zhí)行,實現(xiàn)對各種功能的操作,在此過程中,管理員的關鍵工作在于負責合約的具體執(zhí)行以及維護合約作為以太坊內(nèi)部賬戶的賬戶狀態(tài);另一方面,利用智能合約的存儲功能可以存儲由用戶發(fā)布的資源及資源請求信息,即關于資源分配的“交易”信息,內(nèi)容的存儲同樣以Merkle樹的形式進行(具體為以太坊獨有的改進的Merkle Patricia Tree結構),任何對其內(nèi)容的改變都會影響合約賬戶的存儲根值(Storage Root),進而影響合約賬戶的賬戶狀態(tài)并最終影響整個以太坊的狀態(tài)。因此,通過智能合約同樣可以保證所記錄信息的難以篡改性。

最后為了避免直接在以太坊網(wǎng)絡上部署智能合約可能會面臨的性能瓶頸問題,在本文實現(xiàn)方案中,智能合約被部署到側鏈,而在主鏈部署一個對應的側鏈合約,作為側鏈與主鏈之間的橋梁。本文方法所涉及參與方主要依靠側鏈實現(xiàn)交互,所產(chǎn)生的資源和資源請求等業(yè)務數(shù)據(jù)在側鏈上被處理并記錄在系統(tǒng)賬戶中。同時,通過與主鏈上的側鏈合約(賬戶)的連接和交互,定期地將側鏈上更新的數(shù)據(jù)同步至主鏈(為保證性能,僅上傳側鏈中區(qū)塊數(shù)據(jù)的Merkle根值,如圖6所示,其可以唯一標識區(qū)塊中所包含的所有更新的用戶狀態(tài)),以充分利用以太坊主網(wǎng)絡帶來的強大安全性保證。當發(fā)現(xiàn)異常時,側鏈上的用戶可以向主鏈發(fā)出驗證查詢和挑戰(zhàn)。

圖6 側鏈數(shù)據(jù)存證Fig.6 Deposit of side-chain data

在區(qū)塊鏈網(wǎng)絡運行正常、合約部署成功且被正常執(zhí)行的情況下,參與方可以基于前端頁面實現(xiàn)資源和資源請求信息的發(fā)布以及相關的驗證工作。

3.2 仿真實現(xiàn)

根據(jù)以上分析,基于以太坊區(qū)塊鏈平臺的邊緣計算資源分配的實現(xiàn)流程如下:

采用XRF法[15]檢測樣品(NaCl、城市固體廢棄物模擬組分和廚余沼渣)中的Cl含量;取約3 g樣品,分別將硼酸和樣品用壓片機(10 MPa下恒壓30 s)壓制成片放入 XRF儀器中,測定其中的 Cl含量。

1)參與各方需要注冊成為以太坊區(qū)塊鏈平臺用戶,注冊可以獲取一個公/私密鑰對,公鑰作為用戶的身份標識,私鑰可以生成數(shù)字簽名用于身份驗證。

2)參與各方通過約定共同制定一份智能合約,合約中規(guī)定了發(fā)布和存儲資源及資源請求信息的執(zhí)行邏輯。寫好的合約將被部署到側鏈,一旦合約成功部署,便不可更改。具體的側鏈實現(xiàn)方法則采用以太坊所支持的Loom Network(LN)。使用Loom SDK部署智能合約,其將為合約單獨創(chuàng)建一條專用的DApp鏈,參與者將在該專用鏈上通過合約實現(xiàn)相關功能的操作,而避免與主鏈上的用戶競爭資源,大幅提高系統(tǒng)效率。

3)合約一旦部署成功,參與者通過前端頁面輸入相關數(shù)據(jù),可以向目標智能合約發(fā)送資源發(fā)布消息和資源請求消息,這些消息本質上具有參數(shù)(資源信息和資源請求信息)的交易。

4)管理員收集網(wǎng)絡中的相關交易,并執(zhí)行交易所觸發(fā)的智能合約。新的資源和資源請求信息由此存儲到了智能合約中,這將導致合約狀態(tài)發(fā)生變化。通過運行共識機制,管理員以區(qū)塊形式將更新后的合約狀態(tài)發(fā)布出去,其他管理員驗證合約的執(zhí)行并同步合約的最新狀態(tài)。當全網(wǎng)的合約狀態(tài)達成一致,即代表新的資源和資源請求信息成功存儲至區(qū)塊鏈,資源分配工作完成。

5)DApp鏈定期與以太坊主鏈進行數(shù)據(jù)同步,將一段時間內(nèi)智能合約中更新的數(shù)據(jù)上傳至主鏈進行存證。具體是通過以太坊交易的形式,將側鏈中更新的區(qū)塊的哈希值存入主鏈中的DApp合約賬戶中進行鎖定。數(shù)據(jù)的可信存儲由以太坊底層網(wǎng)絡及其共識協(xié)議保證。側鏈用戶可以通過查詢主鏈鎖定數(shù)據(jù)進行相關驗證工作。

6)以上操作包括資源請求者可以對指定資源提供者發(fā)出資源訪問請求,以及資源提供者可以根據(jù)鏈上信息驗證來自各方的資源訪問請求的合法性,皆可通過前端頁面完成可視化操作。

為了評估本文所提出的方法的正確性和可行性,本文建立以太坊私有鏈網(wǎng)絡來模擬真實應用環(huán)境。通過基于Solidity語言的智能合約編寫以及基于NodeJS的前端開發(fā),并使用Loom Network將合約部署到專用的DApp鏈,實現(xiàn)對主鏈計算工作的卸載。

4 實驗與結果分析

4.1 實驗環(huán)境搭建

4.2 實驗過程與結果分析

在完成Loom安裝后,首先使用Loom init和Loom run命令初始化DApp側鏈。然后使用Truffle unbox webpack命令從Truffle官網(wǎng)獲取空項目。合約的編寫使用Solidity語言,合約源碼存放于以.sol為擴展名的文件中,文件放置于contract文件夾中。合約編寫完成后使用truffle compile命令編譯代碼,編譯生成以.json為擴展名的字節(jié)碼文件存放于新生成的build文件夾中。為了使Truffle連接到側鏈,首先需要通過npm install loom-truffle-provider-save命令安裝一個Loom Truffle Provider,然后修改truffle.js進行相應的配置。成功配置后,使用truffle migrate-network loom_dapp_chain命令將合約部署至側鏈,這一過程將消耗燃氣值(以太幣)。

資源信息的發(fā)布如圖7所示。用戶通過輸入資源總量信息(簡單用數(shù)字表示)以及資源可用的開始時間和結束時間,點擊確定按鈕生成資源發(fā)布消息,消息的其他數(shù)據(jù)如時間戳和簽名等由系統(tǒng)自動生成。消息將觸發(fā)智能合約,執(zhí)行的結果是將消息包含的資源信息存儲到智能合約中,并且系統(tǒng)會自動計算出一個資源ID以唯一地標識資源,ID具體由資源提供者身份標識和消息發(fā)布時間戳計算哈希得到,具體后臺數(shù)據(jù)如圖8所示。

圖7 資源信息的發(fā)布Fig.7 Announce of resource information

圖8 資源信息記錄Fig.8 Records of resource information

對于發(fā)布資源請求信息,過程與發(fā)布資源信息類似,如圖9所示,用戶通過前端頁面輸入所要請求的資源的ID以及所需資源量,點擊確定按鈕生成資源請求消息。系統(tǒng)將通過資源ID檢索到對應資源信息(如果存在),并且判斷其剩余資源量是否能滿足該請求以及請求發(fā)出時間是否在資源的可用時間范圍內(nèi)。合法的資源請求將被記錄到智能合約中,即實現(xiàn)數(shù)據(jù)的“上鏈”,具體后臺數(shù)據(jù)如圖10所示。在本文方法的設計和實驗中,假設用戶可以以某種方式獲取到已發(fā)布的包括資源ID在內(nèi)的資源信息,則應著重關注于針對已獲取到的資源的請求及請求信息的存儲。

圖9 資源請求信息的發(fā)布Fig.9 Announce of resource request information

圖10 資源請求信息記錄Fig.10 Records of resource requests information

當資源請求通過驗證成功記錄到區(qū)塊鏈上時,資源請求者可以憑借相應的資源請求記錄的ID信息向指定的資源提供者發(fā)出資源訪問請求。根據(jù)到達的訪問請求以及區(qū)塊鏈上的資源請求信息,資源提供者可以對訪問請求的合法性進行驗證,即通過請求者身份標識信息以及資源請求ID信息,查詢并驗證是否存在這樣一個資源請求,其中的請求者身份與當前訪問請求者的身份相符。若驗證通過,資源提供者將向其開放部分資源。若請求者身份信息有誤或者根本沒有這樣一條資源請求信息的記錄,則驗證不通過,資源提供者將拒絕該請求。

上述實驗說明了本文所提出的資源分配方法可以以去中心化方式順利進行資源分配,確保有關資源分配的關鍵信息的可信存儲,以此有效防止對資源的錯用和濫用,實現(xiàn)可信的計算資源分配。本文實驗基于本地測試網(wǎng)絡進行,在正式應用時需要根據(jù)真實網(wǎng)絡環(huán)境進行相應的調(diào)整。

5 結束語

本文針對傳統(tǒng)中心化方案的單點故障及信任問題,提出一種基于區(qū)塊鏈的去中心化資源分配方法。以去中心化手段對資源分配過程中所涉及的關鍵信息進行驗證及存儲,達到以可信方式去中心化控制分配過程的目的。同時,使用以太坊及其所支持的智能合約技術對本文方法進行實現(xiàn),并運用側鏈技術對以太坊擴容。下一步將針對現(xiàn)有主流共識機制進行研究,改進工作量證明共識機制,以更加完善本文去中心化的資源分配方法。

猜你喜歡
側鏈以太提供者
酞菁鋅的側鏈修飾及光動力活性研究
以太萬物理論概述
網(wǎng)絡交易平臺提供者的法律地位與民事責任分析
基于隱私度和穩(wěn)定度的D2D數(shù)據(jù)共享伙伴選擇機制
含聚醚側鏈梳型聚羧酸鹽分散劑的合成及其應用
車易鏈:做汽車業(yè)的“以太坊”
梳型接枝PVC的性能研究
網(wǎng)絡言論自由的行政法規(guī)制研究
紫杉醇C13側鏈的硒代合成及其結構性質
A Study on the Contract Research Organization