• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Petri網(wǎng)的區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)流程模型研究

      2020-09-09 03:09:02徐濟(jì)成
      關(guān)鍵詞:庫所前驅(qū)業(yè)務(wù)流程

      李 嶒 徐濟(jì)成,2 李 亮

      1(安徽中澳科技職業(yè)學(xué)院 安徽 合肥 230041) 2(安徽農(nóng)業(yè)大學(xué) 安徽 合肥 230036) 3(中國科學(xué)技術(shù)大學(xué) 安徽 合肥 230026)

      0 引 言

      區(qū)塊鏈技術(shù)起源于比特幣,它將密碼學(xué)、時(shí)序數(shù)據(jù)、共識(shí)機(jī)制和對(duì)等網(wǎng)絡(luò)等技術(shù)結(jié)合起來,在去中心化的系統(tǒng)環(huán)境下,保證價(jià)值交易的安全、可靠、不可篡改。隨著國內(nèi)外學(xué)者對(duì)區(qū)塊鏈技術(shù)研究的不斷深入,區(qū)塊鏈的應(yīng)用場(chǎng)景從數(shù)字貨幣逐步擴(kuò)展到金融領(lǐng)域之外,成為了一種去中心化的應(yīng)用系統(tǒng)解決方案[1]。建立在區(qū)塊鏈技術(shù)架構(gòu)之上的應(yīng)用系統(tǒng)稱為區(qū)塊鏈應(yīng)用系統(tǒng),為了保證區(qū)塊鏈應(yīng)用系統(tǒng)穩(wěn)定、高效、智能地運(yùn)行,其業(yè)務(wù)流程的正確性至關(guān)重要,因此在區(qū)塊鏈應(yīng)用系統(tǒng)實(shí)施之前需要對(duì)業(yè)務(wù)流程進(jìn)行建模和分析,以此避免在運(yùn)行過程中出現(xiàn)異常而帶來的損失。

      區(qū)塊鏈應(yīng)用系統(tǒng)的運(yùn)行機(jī)制和業(yè)務(wù)流程有別于傳統(tǒng)的DBMS,其業(yè)務(wù)流程的建模和分析方法可以借鑒傳統(tǒng)的工作流模型分析技術(shù),結(jié)合區(qū)塊鏈應(yīng)用的運(yùn)行機(jī)制,設(shè)計(jì)業(yè)務(wù)流程的圖形化建模元素,定義形式化的數(shù)學(xué)描述方法,改造流程模型驗(yàn)證分析算法。Petri網(wǎng)是一種基于狀態(tài)的建模方法,適用于各種系統(tǒng)業(yè)務(wù)流程建模分析,它具有圖形化的模型表示方法、形式化的數(shù)學(xué)描述方法、多種分析技術(shù)等特點(diǎn)[2],在工作流應(yīng)用系統(tǒng)建模分析中已有不少成熟的應(yīng)用,Petri網(wǎng)的建模分析方法具有很好的擴(kuò)展性,也適用于區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)流程建模分析。

      1 區(qū)塊鏈應(yīng)用

      1.1 區(qū)塊鏈技術(shù)簡(jiǎn)介

      區(qū)塊鏈?zhǔn)菑谋忍貛诺讓犹崛〕鰜淼囊环N由節(jié)點(diǎn)共同維護(hù)的分布式共享數(shù)據(jù)庫(賬本)技術(shù),區(qū)塊鏈的基本概念有:交易(Transaction)是一次對(duì)賬本的寫入操作,在區(qū)塊鏈技術(shù)中交易信息只能查詢和寫入,不能更新和刪除;區(qū)塊(Block)用于記錄一個(gè)時(shí)間點(diǎn)發(fā)生的交易及交易的處理結(jié)果,區(qū)塊數(shù)據(jù)需要區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)達(dá)成共識(shí)后才能寫入賬本;鏈(Chain)是由一個(gè)個(gè)區(qū)塊數(shù)據(jù)根據(jù)交易時(shí)間點(diǎn)的順序串聯(lián)鏈接而成,相當(dāng)于賬本狀態(tài)的日志記錄。區(qū)塊鏈技術(shù)實(shí)現(xiàn)了去中心化、集體維護(hù)、不可篡改和交易可追溯的應(yīng)用系統(tǒng)解決方案,主要特點(diǎn)如下。

      (1) 去中心化:節(jié)點(diǎn)之間用P2P的方式進(jìn)行交易,交易的地址由參與節(jié)點(diǎn)自行管理,數(shù)據(jù)存儲(chǔ)在分布式共享賬本上,交易的安全由全體節(jié)點(diǎn)共同驗(yàn)證,實(shí)現(xiàn)了區(qū)塊鏈網(wǎng)絡(luò)的互信機(jī)制。

      (2) 交易透明不可篡改:區(qū)塊鏈的共享賬本是一種層次數(shù)據(jù)庫,數(shù)據(jù)庫中的記錄按照產(chǎn)生的時(shí)間順序永久保存,對(duì)區(qū)塊鏈網(wǎng)絡(luò)上的所有節(jié)點(diǎn)都是公開的,任何對(duì)數(shù)據(jù)的操作都將被記錄下來。

      (3) 交易可追溯:由于區(qū)塊數(shù)據(jù)根據(jù)hash值彼此關(guān)聯(lián),一旦達(dá)成共識(shí)寫入賬本,則不能對(duì)記錄進(jìn)行更改和刪除,只有不斷地追加數(shù)據(jù)來表示不同的狀態(tài)。

      1.2 區(qū)塊鏈應(yīng)用的運(yùn)行方式

      共識(shí)機(jī)制是區(qū)塊鏈技術(shù)的核心,在P2P網(wǎng)絡(luò)中互不信任的節(jié)點(diǎn)通過一種預(yù)設(shè)的規(guī)則達(dá)到對(duì)新增數(shù)據(jù)的一致認(rèn)可就是共識(shí)[3]。共識(shí)機(jī)制存在的意義是抵御網(wǎng)絡(luò)攻擊、防止數(shù)據(jù)被惡意篡改。區(qū)塊鏈應(yīng)用和傳統(tǒng)中心化DBMS提供數(shù)據(jù)記錄增、刪、查、改的功能不同,嚴(yán)格來說在區(qū)塊鏈應(yīng)用中只有查詢和新增區(qū)塊數(shù)據(jù),刪除和更新操作是通過新增交易數(shù)據(jù)來實(shí)現(xiàn),交易數(shù)據(jù)由所有節(jié)點(diǎn)根據(jù)共識(shí)算法共同計(jì)算驗(yàn)證,達(dá)成共識(shí)的交易數(shù)據(jù)記錄在共享數(shù)據(jù)庫中,區(qū)塊鏈應(yīng)用向用戶展示的信息為某一時(shí)刻所有交易數(shù)據(jù)共同計(jì)算的結(jié)果。區(qū)塊鏈這種數(shù)據(jù)操作和存儲(chǔ)的方法保證了所有信息變動(dòng)是可追溯的,而且絕不可能出現(xiàn)更新延遲導(dǎo)致的信息不對(duì)稱。區(qū)塊鏈應(yīng)用數(shù)據(jù)操作流程示意如圖1所示。

      1.3 區(qū)塊鏈應(yīng)用系統(tǒng)和傳統(tǒng)DBMS的比較分析

      區(qū)塊鏈應(yīng)用系統(tǒng)和傳統(tǒng)中心化的DBMS都是通過應(yīng)用界面和用戶進(jìn)行交互,從用戶操作的角度來講,兩者的前端操作是一致的。DBMS采用中心化的BS或CS系統(tǒng)架構(gòu),客戶端交互應(yīng)用通過開放數(shù)據(jù)連接(數(shù)據(jù)庫控制接口)來調(diào)用數(shù)據(jù)庫系統(tǒng)(DBS),中心服務(wù)器在網(wǎng)絡(luò)中有著不可替代的重要地位,它根據(jù)用戶角色來分配操作權(quán)限[4],通過驗(yàn)證用戶的合法性來保證數(shù)據(jù)的合法性,其運(yùn)行方式如圖2所示。

      圖2 DBMS運(yùn)行示意圖

      區(qū)塊鏈應(yīng)用則是通過智能合約發(fā)送交易請(qǐng)求[5],經(jīng)過共識(shí)機(jī)制由節(jié)點(diǎn)驗(yàn)證后寫入共享賬本,為了保證操作的合法性,節(jié)點(diǎn)產(chǎn)生的交易由其他節(jié)點(diǎn)根據(jù)共識(shí)算法來共同計(jì)算驗(yàn)證,驗(yàn)證的對(duì)象是交易數(shù)據(jù)的本身[6],區(qū)塊鏈應(yīng)用底層采用P2P的對(duì)等網(wǎng)絡(luò),所有節(jié)點(diǎn)在網(wǎng)絡(luò)中具有平等的地位。區(qū)塊鏈應(yīng)用系統(tǒng)的運(yùn)行示意圖如圖3所示。

      圖3 區(qū)塊鏈應(yīng)用系統(tǒng)運(yùn)行示意圖

      區(qū)塊鏈應(yīng)用系統(tǒng)和傳統(tǒng)DBMS采用完全不同的技術(shù)架構(gòu),兩者在網(wǎng)絡(luò)環(huán)境、應(yīng)用環(huán)境、數(shù)據(jù)操作方式、操作主體、數(shù)據(jù)對(duì)象、驗(yàn)證方式、訪問控制、存儲(chǔ)方式和數(shù)據(jù)結(jié)構(gòu)等方面存在不同,因此在區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)流程的分析方法不能直接照搬DBMS成熟的工作流管理技術(shù),需要根據(jù)區(qū)塊鏈應(yīng)用系統(tǒng)的特點(diǎn)對(duì)建模方法、正確性定義和驗(yàn)證算法進(jìn)行改造。區(qū)塊鏈應(yīng)用系統(tǒng)和DBMS的對(duì)比如表1所示。

      表1 傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)和區(qū)塊鏈應(yīng)用系統(tǒng)的對(duì)比

      2 區(qū)塊鏈應(yīng)用業(yè)務(wù)流程的建模方法

      2.1 區(qū)塊鏈應(yīng)用業(yè)務(wù)流程的形式化定義

      參照Petri網(wǎng)對(duì)中心化DBMS的工作流定義,結(jié)合區(qū)塊鏈應(yīng)用業(yè)務(wù)流程的運(yùn)行機(jī)制,提出區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)流程網(wǎng)的定義。

      定義1區(qū)塊鏈應(yīng)用業(yè)務(wù)流程網(wǎng)是一個(gè)四元組PCN為(P,T,V,F(xiàn)),其中:

      (1)P為Petri網(wǎng)庫所的集合,庫所用于表示流程路徑的Token容器,?p∈P稱為一個(gè)庫所;

      (2)T為交易的集合,區(qū)塊鏈應(yīng)用的原子任務(wù)稱為交易,T有兩個(gè)子集U和S,U是數(shù)據(jù)層操作交易的集合,S是應(yīng)用層交易的集合,T=U∪S,U∩S=?;

      (3)V是對(duì)交易進(jìn)行分布式共識(shí)計(jì)算后的驗(yàn)證狀態(tài)的集合,?v∈V∧?v(v=0∨v=1);

      (4)F是連接交易和庫所之間的弧的集合,?t1∈T∧?t2∈T?(t1,t2)∈F∨(t2,t1)∈F。

      推理1在PCN中至少包含兩個(gè)特殊的庫所:s和e,?s=?∧e?=?,其中:s為起始庫所,表示一個(gè)業(yè)務(wù)的開始,其前驅(qū)庫所?s為空;e為終止庫所,表示一個(gè)業(yè)務(wù)的完成,其后繼庫所e?為空。一個(gè)僅有起始庫所和終止庫所的PCN稱為空業(yè)務(wù)流。

      推理2如果在空業(yè)務(wù)流PCN中加入一個(gè)交易t0,t0的前驅(qū)庫所為s,t0的后繼庫所為e,形式化表示為:t0→v0,?t0={s},v0?={e}。

      推理3如果在非空業(yè)務(wù)流PCN中加入一個(gè)交易tn,需要定義前驅(qū)庫所fn和后繼庫所rn,fn為前一個(gè)交易的后繼庫所,rn為后一個(gè)交易的前驅(qū)庫所,形式化表示為:tn→vn,?tn={rn-1},vn?={fn+1}。

      推理4一個(gè)數(shù)據(jù)操作交易t連接對(duì)應(yīng)一個(gè)共識(shí)子過程v,v分別連接的前驅(qū)庫所和后繼庫所,?t?U→v,?v=?t,v?=t?。

      2.2 交易模型的圖形化表示

      一個(gè)完整的區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)流程由若干個(gè)原子任務(wù)組成,原子任務(wù)是一個(gè)不可分割的交易,直至完成單個(gè)操作、查詢到所需數(shù)據(jù)、接受寫入?yún)^(qū)塊數(shù)據(jù)或拒絕寫入。一個(gè)原子任務(wù)在區(qū)塊鏈應(yīng)用系統(tǒng)模型中表示為一個(gè)原子交易模型,由前驅(qū)庫所、后繼庫所、交易、共識(shí)標(biāo)記、共識(shí)操作和賬本六個(gè)部分組成。當(dāng)模型中的Token進(jìn)入任務(wù)的前驅(qū)庫所時(shí),由當(dāng)前節(jié)點(diǎn)發(fā)起交易請(qǐng)求,根據(jù)交易的類型狀態(tài),應(yīng)用層交易直接在本地執(zhí)行完成后轉(zhuǎn)至后繼庫所;數(shù)據(jù)層交易需要智能合約對(duì)交易區(qū)塊數(shù)據(jù)進(jìn)行加密,向P2P網(wǎng)絡(luò)發(fā)送廣播,請(qǐng)求驗(yàn)證交易,達(dá)成共識(shí)的數(shù)據(jù)寫入共享賬本,無法達(dá)成共識(shí)的交易數(shù)據(jù)被拒絕寫入[7],并將Token放入交易的前驅(qū)庫所。原子交易模型如圖4所示。

      圖4 原子交易

      在區(qū)塊鏈應(yīng)用系統(tǒng)建模中,為了便于對(duì)模型進(jìn)行圖形表示,需要對(duì)原子交易模型進(jìn)行簡(jiǎn)化,區(qū)塊鏈應(yīng)用系統(tǒng)的交易分為應(yīng)用層交易和數(shù)據(jù)層交易,其中應(yīng)用層交易的數(shù)據(jù)交換在本地完成,不對(duì)共享賬本進(jìn)行操作,如本地緩存操作、本機(jī)日志文件修改、用戶數(shù)據(jù)校驗(yàn)等,化簡(jiǎn)后的應(yīng)用層原子交易如圖5所示。

      圖5 應(yīng)用層交易簡(jiǎn)化圖

      數(shù)據(jù)層交易需要對(duì)保存在區(qū)塊鏈網(wǎng)絡(luò)中的共享賬本進(jìn)行操作,產(chǎn)生一個(gè)交易區(qū)塊數(shù)據(jù)并在全網(wǎng)中廣播并請(qǐng)求寫入,此類交易需要其他節(jié)點(diǎn)共同驗(yàn)證,達(dá)成共識(shí)后寫入成功,共識(shí)失敗將拒絕寫入。為了更清晰地描述數(shù)據(jù)交易,將交易對(duì)應(yīng)的共識(shí)子過程看成一個(gè)虛擬的交易,交易的后繼庫所為虛擬交易的前驅(qū)庫所,虛擬交易有兩個(gè)后繼庫所:當(dāng)前交易的前驅(qū)庫所和后續(xù)交易的前驅(qū)庫所,化簡(jiǎn)后的數(shù)據(jù)層原子交易如圖6所示。

      圖6 數(shù)據(jù)層交易簡(jiǎn)化圖

      2.3 模型的組合結(jié)構(gòu)

      2.3.1串行結(jié)構(gòu)

      具有先后順序的交易由庫所連接,前一交易的后繼庫所和后一交易的前驅(qū)庫所為同一庫所,這種模型的組合方式為串行結(jié)構(gòu)。一個(gè)完整的流程模型中包含一個(gè)存在庫所中的Token,圖7所示為一個(gè)應(yīng)用層交易和一個(gè)數(shù)據(jù)層交易順序執(zhí)行構(gòu)成的組合模型。

      圖7 串行結(jié)構(gòu)模型

      2.3.2并行與結(jié)構(gòu)

      兩個(gè)或以上交易同時(shí)執(zhí)行完畢后,后續(xù)交易才能得到執(zhí)行,這種模型的組合方式為并行與結(jié)構(gòu)。在模型表示中,后續(xù)交易有兩個(gè)或以上前驅(qū)庫所,當(dāng)所有前驅(qū)庫所中均包含Token,才能驅(qū)動(dòng)后續(xù)交易的執(zhí)行,圖8為一個(gè)包含并行與結(jié)構(gòu)的組合模型,其中:交易t1和t2組成的并行與結(jié)構(gòu),交易t3為后續(xù)交易。

      圖8 并行與結(jié)構(gòu)模型

      2.3.3并行或結(jié)構(gòu)

      兩個(gè)或以上的交易的其中一個(gè)執(zhí)行完畢后即可執(zhí)行后續(xù)交易,這種交易模型的組合方式為并行或結(jié)構(gòu)。在模型表示中,兩個(gè)或以上交易擁有共同的后繼庫所,該后繼庫所為后續(xù)交易的前驅(qū)庫所,任意交易執(zhí)行后Token均可進(jìn)入后繼庫所,圖9所示為一個(gè)包含并行或結(jié)構(gòu)的組合模型,其中:交易t1和t2組成了并行或結(jié)構(gòu),交易t3為后續(xù)交易。

      圖9 并行或結(jié)構(gòu)模型

      2.4 模型的正確性定義

      區(qū)塊鏈應(yīng)用系統(tǒng)去中心化的特性需要其在區(qū)塊鏈網(wǎng)絡(luò)中高度智能化地自動(dòng)運(yùn)行,所以該系統(tǒng)在實(shí)施一個(gè)業(yè)務(wù)流程模型前,要保證業(yè)務(wù)流程模型的正確性,避免應(yīng)用系統(tǒng)在運(yùn)行過程中實(shí)施維護(hù)[8]。一個(gè)區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)流程模型PCN為(P,T,V,F(xiàn))的正確性可描述為流程的可達(dá)性、結(jié)果的唯一性、任務(wù)的必要性和共識(shí)狀態(tài)的完整性[9]四個(gè)方面。

      定義5共識(shí)狀態(tài)的完整性:?v?V∧(t→e)∧(v=1),當(dāng)模型執(zhí)行完畢后,所有需要共識(shí)的任務(wù)均已經(jīng)達(dá)成了共識(shí),共識(shí)標(biāo)記集合V中所有的元素的值均為1。

      3 區(qū)塊鏈應(yīng)用的模型分析及應(yīng)用

      3.1 驗(yàn)證方法

      數(shù)據(jù)層交易需要進(jìn)行共識(shí)驗(yàn)證,應(yīng)用系統(tǒng)響應(yīng)了交易并不意味著交易將成功執(zhí)行[10],為了保證業(yè)務(wù)流程模型和實(shí)際相符,引入了虛擬交易的概念。將數(shù)據(jù)層交易對(duì)應(yīng)的共識(shí)子過程虛擬成一個(gè)交易,若共識(shí)失敗流程跳轉(zhuǎn)到交易的前驅(qū)庫所;共識(shí)成功則跳轉(zhuǎn)到后繼庫所。

      定義6虛擬交易。虛擬交易的前驅(qū)庫所為交易的后繼庫所,虛擬交易的后繼庫所有兩個(gè):對(duì)應(yīng)交易的前驅(qū)庫所和后續(xù)交易的前驅(qū)庫所。交易關(guān)系矩陣和交易集合中包含虛擬交易,具體形式化描述為:?t∈U??v(?v=t?∧v?=?t∧v?=t?),T=T∪{v}。

      根據(jù)區(qū)塊鏈應(yīng)用系統(tǒng)業(yè)務(wù)系統(tǒng)模型PCN正確性四個(gè)方面的定義,利用交易關(guān)系矩陣表示交易之間的模型的弧,通過庫所向量、交易集合和共識(shí)向量三個(gè)數(shù)據(jù)來動(dòng)態(tài)描述每個(gè)交易執(zhí)行后的模型狀態(tài)。具體算法描述如下:

      (1) 構(gòu)造交易關(guān)系矩陣,矩陣中包含模型中的所有交易和虛擬交易,矩陣的列表和行號(hào)分別為交易,行和列交叉處的值表示為交易之間的前后關(guān)系,如交易之間存在先后關(guān)系則值為1,否則值為0。

      (2) 庫所向量表示Token在模型庫所的存在情況,向量的維數(shù)為庫所的數(shù)量,向量元素的順序不可更改,包含Token的庫所所對(duì)應(yīng)的庫所向量元素的值為1,空庫所對(duì)應(yīng)庫所向量元素的值為0。模型在初始狀態(tài)時(shí),Token存在于起始庫所,庫所向量p=(1,0,0,0,…);終止?fàn)顟B(tài)時(shí),Token存在于終止庫所,庫所向量p=(0,0,0,…,0,1);中間狀態(tài)根據(jù)模型的實(shí)際執(zhí)行情況作相應(yīng)的修改。

      (4) 共識(shí)向量表示模型中交易達(dá)成共識(shí)的情況,向量的維數(shù)為虛擬交易的數(shù)量,向量元素的順序不可更改,在起始狀態(tài),所有查詢交易對(duì)應(yīng)的向量元素值為0,v=(0,0,0,…);在終止?fàn)顟B(tài)時(shí),所有交易都應(yīng)該得到執(zhí)行,所有虛擬交易都已經(jīng)達(dá)成了共識(shí),共識(shí)向量v=(1,1,1,…);在中間狀態(tài),當(dāng)交易集合中虛擬交易的后續(xù)交易從交易集合中刪除后,更新共識(shí)向量對(duì)應(yīng)元素的值。

      該算法的思想就是從起始庫所指向的交易開始,根據(jù)交易關(guān)系矩陣所表示的交易順序,由交易的前驅(qū)庫所引出當(dāng)前交易,再將Token放入所有當(dāng)前交易的后繼庫所,反復(fù)執(zhí)行這個(gè)過程,直至流程終止。在改變當(dāng)前交易的每一個(gè)步驟中,將當(dāng)前的一個(gè)或多個(gè)交易從交易集合中刪除,修改庫所向量和共識(shí)向量,直到交易集合為空,如果庫所向量和共識(shí)向量達(dá)到了最終狀態(tài),則證明該模型的正確性。

      3.2 應(yīng)用案例

      3.2.1案例描述

      身份認(rèn)證系統(tǒng)是在區(qū)塊鏈技術(shù)架構(gòu)上建立的應(yīng)用系統(tǒng),身份信息修改模塊中既包含了應(yīng)用層的交易,也包含了數(shù)據(jù)層的交易。本案例選取了身份認(rèn)證系統(tǒng)中身份信息修改模塊,對(duì)其操作流程設(shè)計(jì)如下。

      (1) 用戶信息查詢。進(jìn)入系統(tǒng)后,要求用戶登錄系統(tǒng)并進(jìn)行身份認(rèn)證,根據(jù)用戶輸入的用戶信息查詢共享賬本,共識(shí)失敗后重新請(qǐng)求認(rèn)證,共識(shí)成功后對(duì)賬本進(jìn)行查詢,查詢不到信息則轉(zhuǎn)入用戶注冊(cè),查詢成功后進(jìn)行身份信息的對(duì)比。

      (2) 登錄判斷。將共享賬本中查詢的身份信息和用戶錄入的信息進(jìn)行比對(duì),比對(duì)成功則表示認(rèn)證通過,允許用戶執(zhí)行修改操作,比對(duì)不成功則轉(zhuǎn)入密碼重設(shè),重設(shè)密碼操作需要進(jìn)行共識(shí)計(jì)算。

      (3) 注冊(cè)用戶。共享賬本中不存在需要查詢的身份信息時(shí)自動(dòng)轉(zhuǎn)入注冊(cè),用戶注冊(cè)操作時(shí)需要對(duì)賬本進(jìn)行寫入,共識(shí)成功后轉(zhuǎn)入認(rèn)證請(qǐng)求,共識(shí)失敗后返回注冊(cè)。

      (4) 身份信息修改。在本地對(duì)用戶錄入的身份信息進(jìn)行判斷,數(shù)據(jù)完成合法性校驗(yàn)則提交修改請(qǐng)求,執(zhí)行共識(shí)操作,共識(shí)成功寫入交易,不成功則重新提交請(qǐng)求。

      根據(jù)以上應(yīng)用案例的操作流程描述,身份信息修改業(yè)務(wù)流程如圖10所示。

      圖10 身份信息修改業(yè)務(wù)流程圖

      3.2.2建立模型

      根據(jù)業(yè)務(wù)流程描述,對(duì)業(yè)務(wù)流程中的交易進(jìn)行分析整理,將共識(shí)操作抽象為虛擬交易,對(duì)非虛擬交易進(jìn)行應(yīng)用層和數(shù)據(jù)層分類,具體交易描述見表2。根據(jù)原子模型的表示方法和模型的組合方式,對(duì)業(yè)務(wù)流程進(jìn)行圖形化的建模如圖11所示。

      表2 業(yè)務(wù)流程交易表

      圖11 業(yè)務(wù)流程模型

      3.2.3正確性推算

      圖12 身份信息修改業(yè)務(wù)流程關(guān)系矩陣

      具體的推算步驟如下:

      步驟1當(dāng)前交易為t1,Token進(jìn)入p2,則:

      p=(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

      v=(0,0,0,0)

      步驟2當(dāng)前交易為t2,Token進(jìn)入p3,則:

      p=(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

      v=(0,0,0,0)

      步驟3當(dāng)前交易為t3,Token進(jìn)入p4和p5,則:

      p=(0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

      v=(0,0,0,0)

      步驟4當(dāng)前交易為v1和t4,Token進(jìn)入p6、p3和p8,則:

      p=(0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0)

      v=(0,0,0,0)

      步驟5當(dāng)前交易為v2、t7和t9,Token進(jìn)入p7、p9和p12,則:

      p=(0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0)

      v=(1,0,0,0)

      步驟6當(dāng)前交易為v2、t7和t9,Token進(jìn)入p2、p6、p10和p13,則:

      p=(0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0)

      v=(1,0,0,0)

      步驟7當(dāng)前交易為t8和t10,Token進(jìn)入p11和p14,則:

      p=(0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0)

      v=(1,1,0,0)

      步驟8當(dāng)前交易為v3和t11,Token進(jìn)入p2、p10和p15,則:

      p=(0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0)

      v=(1,1,0,0)

      步驟9當(dāng)前交易為t12,Token進(jìn)入p16,則:

      p=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0)

      v=(1,1,1,0)

      步驟10當(dāng)前交易為v4,Token進(jìn)入p15和p17,則:

      p=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0)

      v=(1,1,1,0)

      步驟11當(dāng)前交易為t13,Token進(jìn)入p18,則:

      p=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)

      v=(1,1,1,1)

      經(jīng)過以上步驟驗(yàn)證,在最終狀態(tài),交易集合為空,表示所有交易都得到了執(zhí)行,滿足交易的必要性定義;庫所向量?jī)H最后一個(gè)元素為1,滿足了結(jié)果的唯一性和流程的可達(dá)性定義;共識(shí)向量所有元素均為1,滿足了共識(shí)的完整性定義。綜上,該業(yè)務(wù)流程是正確的。

      3.3 業(yè)務(wù)流程的實(shí)現(xiàn)

      3.3.1區(qū)塊鏈應(yīng)用系統(tǒng)技術(shù)架構(gòu)

      一個(gè)完整的區(qū)塊鏈應(yīng)用由用戶交互層、智能合約層和區(qū)塊鏈核心層[11]三個(gè)部分組成:最底層是區(qū)塊鏈核心層,是區(qū)塊鏈應(yīng)用系統(tǒng)運(yùn)行的基礎(chǔ),它包含了區(qū)塊數(shù)據(jù)存儲(chǔ)、區(qū)塊頭的鏈?zhǔn)浇Y(jié)構(gòu)、Mekel樹層次結(jié)構(gòu),通過Hash函數(shù)確定區(qū)塊數(shù)據(jù)的地址關(guān)系,P2P的網(wǎng)絡(luò)結(jié)構(gòu)決定了去中心化的系統(tǒng)架構(gòu);智能合約層是用戶交互層和區(qū)塊鏈核心層之間數(shù)據(jù)交換的橋梁,是區(qū)塊鏈應(yīng)用程序區(qū)別于傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)最關(guān)鍵的部分,智能合約決定了應(yīng)用系統(tǒng)的功能,系統(tǒng)對(duì)數(shù)據(jù)的操作通過調(diào)用職能合約完成,智能合約編譯后存放在合約容器中,智能合約虛擬機(jī)是智能合約的運(yùn)行環(huán)境;用戶交互層是區(qū)塊鏈應(yīng)用系統(tǒng)的前端程序集合,由用戶交互界面、前端程序運(yùn)行環(huán)境、本地?cái)?shù)據(jù)和文件、操作函數(shù)和應(yīng)用接口等部分構(gòu)成,其中操作函數(shù)主要作用是通過調(diào)用智能合約中定義的函數(shù)進(jìn)行區(qū)塊數(shù)據(jù)的操作,本地?cái)?shù)據(jù)臨時(shí)保存在本地計(jì)算機(jī)上,對(duì)本地?cái)?shù)據(jù)的修改和訪問不需要其他節(jié)點(diǎn)參與共識(shí)驗(yàn)證,流程引擎是用于注冊(cè)和執(zhí)行業(yè)務(wù)流程模型。區(qū)塊鏈應(yīng)用系統(tǒng)的體系架構(gòu)如圖13所示。

      3.3.2數(shù)據(jù)傳遞方式

      區(qū)塊鏈應(yīng)用系統(tǒng)用戶界面處在應(yīng)用層,其中包含本地?cái)?shù)據(jù)和本地函數(shù),流程引擎對(duì)本地操作提供運(yùn)行支持,當(dāng)用戶需要對(duì)應(yīng)用系統(tǒng)進(jìn)行操作時(shí),系統(tǒng)調(diào)用本地函數(shù)來響應(yīng)用戶的請(qǐng)求,如果所處理的數(shù)據(jù)為本地?cái)?shù)據(jù),則直接在應(yīng)用層處理完畢后返回結(jié)果。系統(tǒng)對(duì)共享賬本的操作需要通過本地函數(shù)調(diào)用智能合約函數(shù),由智能合約對(duì)交易進(jìn)行加密并向全網(wǎng)廣播,其他節(jié)點(diǎn)參與交易的驗(yàn)證,向區(qū)塊鏈網(wǎng)絡(luò)返回共識(shí)計(jì)算結(jié)果,并執(zhí)行交易的寫入。交易寫入操作完成后,返回的數(shù)據(jù)保存在合約變量中,由合約函數(shù)對(duì)數(shù)據(jù)進(jìn)行解密后傳遞給本地應(yīng)用層函數(shù),最終向用戶返回結(jié)果[12]。區(qū)塊鏈應(yīng)用系統(tǒng)的數(shù)據(jù)傳遞方式如圖14所示。

      3.3.3流程引擎的應(yīng)用

      流程引擎的作用是將流程模型實(shí)施應(yīng)用,區(qū)塊鏈應(yīng)用系統(tǒng)是建立在區(qū)塊鏈技術(shù)架構(gòu)上,應(yīng)用的特殊性要求引擎必須是輕量級(jí)的,以便于將用戶界面、流程引擎、智能合約和虛擬機(jī)打包在一起分發(fā)到節(jié)點(diǎn)計(jì)算機(jī)上。Bigbross Bossa是一個(gè)按嵌入式設(shè)計(jì)的輕量級(jí)的流程引擎[13],適合實(shí)施使用Petri網(wǎng)定義工作流模型,完全支持層次數(shù)據(jù)庫,能方便集成到應(yīng)用系統(tǒng)中。在應(yīng)用程序中調(diào)用Bossa引擎時(shí),需要通過BossaFactory類生成一個(gè)對(duì)象,并通過此對(duì)象創(chuàng)建一個(gè)流程模型實(shí)例,注冊(cè)模型對(duì)象,最后執(zhí)行模型,具體方法如下:

      (1) 流程引擎的實(shí)例化:

      BossaFactory factory01 = new BossaFactory();

      factory.setModel(″dir″);

      (2) 創(chuàng)建一個(gè)空模型:

      bossaModel = factory.createModel();

      (3) 模型的定義:

      Place place = bossaModel.registerPlace(″p1″, 1);

      //建立庫所,第一個(gè)參數(shù)為庫所名,第二個(gè)參數(shù)表示庫所

      //中是否包含Token

      Transition t = caseType.registerTransition(″t1″, ″e(cuò)xplain″);

      //創(chuàng)建交易,第一個(gè)參數(shù)為交易名,第二個(gè)參數(shù)為交易說明

      t.input(p1, ″1″);

      t.output(p2, ″1″);

      //定義交易t的前驅(qū)庫所和后繼庫所

      (4) 模型的注冊(cè)和執(zhí)行:

      factory01 .buildTemplate(bossaModel);

      //注冊(cè)模型

      Activity activity =factory01.open(bossaModel);

      //開始執(zhí)行模型

      structure activity.cancel();

      //執(zhí)行完畢,返回操作結(jié)果

      4 結(jié) 語

      由于區(qū)塊鏈應(yīng)用系統(tǒng)和傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)驗(yàn)證和操作機(jī)制的不同,需要在傳統(tǒng)工作流建模與驗(yàn)證方法上進(jìn)行改造,使業(yè)務(wù)流程模型的表示方式和驗(yàn)證算法能滿足區(qū)塊鏈的運(yùn)行特點(diǎn)。本文給出的建模方法以傳統(tǒng)工作流技術(shù)為基礎(chǔ),根據(jù)Petri網(wǎng)提供的圖形元素,結(jié)合區(qū)塊鏈的技術(shù)特點(diǎn)和運(yùn)行機(jī)制,對(duì)業(yè)務(wù)流程中的交易進(jìn)行抽象和表達(dá),給出業(yè)務(wù)流程的圖形化模型。在模型的正確性定義上,增加了區(qū)塊鏈共識(shí)計(jì)算的部分,一個(gè)業(yè)務(wù)流程執(zhí)行完畢需要完成所有交易的共識(shí)計(jì)算。模型正確性驗(yàn)證過程中,將共識(shí)計(jì)算抽象為一個(gè)虛擬交易,和其他交易一起共同參與交易關(guān)系矩陣的構(gòu)造,算法根據(jù)交易順序模擬流程的執(zhí)行過程,每次執(zhí)行都按照規(guī)則改變狀態(tài)向量的值,直到所有交易執(zhí)行完畢,根據(jù)狀態(tài)向量的結(jié)果判斷流程模型的正確性。

      本文提出的模型符合區(qū)塊鏈應(yīng)用程序的運(yùn)行機(jī)制和特點(diǎn),其建模方法能夠完整地表達(dá)區(qū)塊鏈應(yīng)用業(yè)務(wù)流程,正確性定義中對(duì)區(qū)塊鏈共識(shí)計(jì)算部分進(jìn)行了描述,驗(yàn)證算法能方便地對(duì)模型正確性定義進(jìn)行推導(dǎo)。由于共識(shí)計(jì)算和普通交易不完全一致,為了更清晰地描述區(qū)塊鏈應(yīng)用系統(tǒng)模型,未來需要尋找一種比Petri網(wǎng)語義和圖形元素更為豐富的建模工具,模型正確性驗(yàn)證方法也有待進(jìn)一步研究和探索。

      猜你喜歡
      庫所前驅(qū)業(yè)務(wù)流程
      RPA機(jī)器人助業(yè)務(wù)流程智能化
      基于FPGA 的有色Petri 網(wǎng)仿真系統(tǒng)設(shè)計(jì)*
      電子器件(2021年1期)2021-03-23 09:24:02
      STK業(yè)務(wù)流程優(yōu)化的探究
      企業(yè)財(cái)務(wù)管理、業(yè)務(wù)流程管理中整合ERP之探索
      基于財(cái)務(wù)業(yè)務(wù)流程再造的ERP信息系統(tǒng)構(gòu)建探析
      中國商論(2016年34期)2017-01-15 14:24:22
      SiBNC陶瓷纖維前驅(qū)體的結(jié)構(gòu)及流變性能
      可溶性前驅(qū)體法制備ZrC粉末的研究進(jìn)展
      前驅(qū)體磷酸鐵中磷含量測(cè)定的不確定度評(píng)定
      利用Petri網(wǎng)特征結(jié)構(gòu)的故障診斷方法
      溶膠-凝膠微波加熱合成PbZr0.52Ti0.48O3前驅(qū)體
      陈巴尔虎旗| 临高县| 阜平县| 中牟县| 石嘴山市| 凤冈县| 晴隆县| 扶余县| 许昌市| 夹江县| 拜城县| 鸡东县| 南皮县| 铁岭县| 化德县| 五大连池市| 邵阳县| 西平县| 高青县| 东台市| 涞源县| 彭阳县| 荃湾区| 新巴尔虎右旗| 泰州市| 玉屏| 张家川| 宜兰县| 孟村| 高雄市| 响水县| 平武县| 上蔡县| 石柱| 云南省| 宜城市| 北京市| 菏泽市| 哈巴河县| 左贡县| 来凤县|