• 
    

    
    

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

      一種區(qū)塊鏈中交易表示模型

      2021-03-11 06:09:58朱咸軍
      信息安全研究 2021年3期
      關(guān)鍵詞:偏序賬本合約

      郭 婧 朱咸軍

      (金陵科技學(xué)院軟件工程學(xué)院 南京 211169)

      (guo_jing163@163.com)

      近年來,區(qū)塊鏈技術(shù)發(fā)展迅速,區(qū)塊鏈作為一個(gè)公開的、去中心化的數(shù)據(jù)庫,作為一個(gè)互相驗(yàn)證的分布式賬本,記錄了所有賬戶發(fā)生的所有交易,即在數(shù)據(jù)庫中將每個(gè)賬戶發(fā)生每筆數(shù)額變化都記錄在內(nèi).

      區(qū)塊鏈作為一個(gè)特殊的賬本,首先從基本結(jié)構(gòu)來看,是由區(qū)塊構(gòu)成的交易鏈條[1].區(qū)塊由區(qū)塊頭以及區(qū)塊主體組成,其中:區(qū)塊頭包含版本號(hào)、該區(qū)塊的前一個(gè)區(qū)塊的哈希值、默克爾樹根數(shù)據(jù)、難度值、隨機(jī)數(shù)、時(shí)間戳;區(qū)塊主體包含了所有交易數(shù)據(jù),同時(shí),區(qū)塊還有2個(gè)關(guān)鍵信息需要注意,即區(qū)塊的高度、區(qū)塊頭信息生成的哈希ID.其中,區(qū)塊頭中的版本號(hào)可用于更新,該區(qū)塊的前一個(gè)區(qū)塊的哈希值用于該區(qū)塊能夠連接并找尋前一個(gè)區(qū)塊,默克爾樹根數(shù)據(jù)則將區(qū)塊主體中包含的所有交易數(shù)據(jù)兩兩計(jì)算最后得到,難度值可以用于控制區(qū)塊生成的時(shí)間,隨機(jī)數(shù)用于讓節(jié)點(diǎn)競爭區(qū)塊的產(chǎn)生權(quán),時(shí)間戳用于記錄區(qū)塊產(chǎn)生的時(shí)間.區(qū)塊主體中記錄的所有交易數(shù)據(jù)均為交互性交易數(shù)據(jù),并且附加記錄交易數(shù)據(jù)的哈希值.區(qū)塊的高度為區(qū)塊的序號(hào),說明了區(qū)塊的產(chǎn)生編號(hào).區(qū)塊頭信息生成的哈希ID可以由下一個(gè)區(qū)塊進(jìn)行引用,從而將區(qū)塊連成了一個(gè)鏈條[1].

      事實(shí)上,區(qū)塊鏈擁有如下幾個(gè)典型的特征[2]:

      1) 該賬本是可以無限增加的,增加的方法通過在區(qū)塊鏈中增加區(qū)塊來實(shí)現(xiàn),區(qū)塊中記錄了1條或多條交易信息;

      2) 賬本中規(guī)定了區(qū)塊之間的順序,區(qū)塊就會(huì)被蓋上時(shí)間戳,區(qū)塊按時(shí)間戳的順序連接形成了一個(gè)總的賬本,這個(gè)總的賬本是作為區(qū)塊鏈形式存在的;

      3) 區(qū)塊鏈?zhǔn)怯伤杏脩艄餐S護(hù)的,因此是去中心化的.

      而現(xiàn)今區(qū)塊鏈技術(shù)不僅作為賬本技術(shù)活躍在與常用技術(shù)的結(jié)合應(yīng)用[3-4]中,而其熱度增加的原因之一是與金融技術(shù)的廣泛融合,特別是數(shù)字貨幣的盛行.而數(shù)字貨幣的開端由2008年中本聰發(fā)表了一篇論文《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》[5]開啟.在該文中完整描述了一種產(chǎn)生了數(shù)字貨幣的記賬系統(tǒng)及一個(gè)競爭記賬的運(yùn)行模式,數(shù)字貨幣則作為挖礦的獎(jiǎng)勵(lì),最長區(qū)塊鏈作為主鏈,并采用了工作量證明作為共識(shí)機(jī)制[6].接著,以太坊在比特幣的概念上更進(jìn)一步,不僅關(guān)注了其存儲(chǔ)交易數(shù)據(jù)的功能,還擴(kuò)展了開發(fā)功能,用戶可以在以太坊上不經(jīng)許可開發(fā)產(chǎn)品,特別是歷史性地應(yīng)用了虛擬機(jī)以及智能合約[7].比特幣作為區(qū)塊鏈1.0的代表,是數(shù)字貨幣的完整生態(tài)系統(tǒng).以太坊[8]作為區(qū)塊鏈2.0的代表,是一種可編程的并在其上生成各種代幣以及開發(fā)的系統(tǒng).而后,區(qū)塊鏈3.0開始產(chǎn)生,不僅僅拘泥于金融以及貨幣領(lǐng)域,而是將重點(diǎn)放在區(qū)塊鏈與其他技術(shù)的跨行業(yè)應(yīng)用上,其中EOS[9]作為一個(gè)突出的代表,它大大提高了吞吐量,并創(chuàng)造性地提出了股份授權(quán)證明機(jī)制[10].這種共識(shí)證明方法與以往的共識(shí)協(xié)議[11-12]有很大的區(qū)別,即針對(duì)所有擁有代幣的節(jié)點(diǎn),選舉出21個(gè)節(jié)點(diǎn)進(jìn)行協(xié)作記賬,為了提高區(qū)塊確認(rèn)的速度,提出了拜占庭容錯(cuò)機(jī)制以及不可逆狀態(tài),將區(qū)塊進(jìn)行分割確認(rèn),而超過2/3的節(jié)點(diǎn)確認(rèn)后將進(jìn)入不可逆狀態(tài).現(xiàn)今,區(qū)塊鏈4.0也在緊鑼密鼓地開發(fā)過程中,雖然很多代幣[13-16]宣稱自己為區(qū)塊鏈4.0,但仍缺少其中的代表技術(shù).

      無論是比特幣還是以太坊,都存在著記賬效率低、確認(rèn)速度慢、吞吐量低等突出問題,對(duì)于比特幣來說,區(qū)塊大小被限制在1 MB.而交易量的增加必然由于區(qū)塊的大小而限制區(qū)塊的出塊時(shí)間以及速度.而在以太坊中,作為一個(gè)運(yùn)轉(zhuǎn)的網(wǎng)絡(luò),當(dāng)用戶進(jìn)行操作時(shí),必然需要支付一定的GAS費(fèi)用,而GAS費(fèi)用的限定間接限定了交易處理速度.因此,諸多開發(fā)者開始研究多種區(qū)塊鏈可擴(kuò)展性的解決方案,研究方案主要有以下幾種:第1種擴(kuò)容方案為側(cè)鏈,側(cè)鏈技術(shù)的做法為不僅僅是一條主鏈,同時(shí)增加側(cè)鏈,可以讓虛擬貨幣安全地從主鏈放到側(cè)鏈中,并且也可以從側(cè)鏈安全地返回到主鏈中,側(cè)鏈中一個(gè)典型應(yīng)用有閃電網(wǎng)絡(luò)、RSK[17],在閃電網(wǎng)絡(luò)中利用智能合約在鏈下進(jìn)行零確認(rèn),而RSK側(cè)鏈既是以太坊圖靈機(jī)又是比特幣側(cè)鏈;第2種擴(kuò)容方案為分片,顧名思義,將數(shù)據(jù)分為更小的數(shù)據(jù)碎片以方便處理,同時(shí)區(qū)塊鏈網(wǎng)絡(luò)也被分為一個(gè)個(gè)小的組件式網(wǎng)絡(luò),交易可以由小的組件式網(wǎng)絡(luò)處理;第3種擴(kuò)容方案為DAG,即有向無環(huán)圖,其中一個(gè)典型的應(yīng)用為IOTA[18],在IOTA中,節(jié)點(diǎn)需要驗(yàn)證2筆交易,驗(yàn)證后進(jìn)行微量的工作量證明,再將自己的交易與這2筆交易綁定,再進(jìn)行廣播,周而復(fù)始節(jié)點(diǎn)確認(rèn)其他的交易,自己的交易也被其他交易所確認(rèn),當(dāng)?shù)竭_(dá)某個(gè)設(shè)定的臨界值時(shí),交易被完全確定,而其后越來越多的技術(shù)采用了DAG技術(shù)[19-20].

      在上述3種主要擴(kuò)容方案中,第1種方法除了主鏈還增加了能夠存儲(chǔ)交易的空間,而第2種方法傾向于處理交易組而不是全網(wǎng)集中來處理單個(gè)交易,第3種方法同時(shí)處理多條交易鏈條,做到高并發(fā).本文針對(duì)區(qū)塊鏈中的交易表示問題,充分考慮了3種擴(kuò)充方案的可行性.首先,從交易本身出發(fā),將交易以交易事件的形式呈現(xiàn).將交易事件定義為改變區(qū)塊鏈狀態(tài)機(jī)中狀態(tài)使之發(fā)生變遷的事件,將交易事件之間的偏序關(guān)系分類.其次,主要對(duì)時(shí)間的先后關(guān)系進(jìn)行考察,在區(qū)塊鏈中時(shí)間先后發(fā)生的關(guān)系限定在指定時(shí)間或者指定的時(shí)間范圍內(nèi).同時(shí)對(duì)交易事件進(jìn)行拆分,拆分的目的是將交易事件分配到賬戶上,并且在交易事件上附加轉(zhuǎn)賬信息或消息.最后,將交易事件、偏序關(guān)系、附加的轉(zhuǎn)賬信息或消息進(jìn)行圖形化表示,并且根據(jù)依賴關(guān)系構(gòu)成新的結(jié)構(gòu)——類與切片,以切片的形式加入根鏈中,實(shí)際上既可以并行處理交易事件和整體查找交易事件,也可以以賬戶為單位查找屬于自己的交易事件鏈條,切片以及類的構(gòu)成也同時(shí)使交易的分塊處理成為可能.

      1 相關(guān)定義

      1.1 區(qū)塊鏈的狀態(tài)機(jī)

      從形式化的角度來看,將整個(gè)區(qū)塊鏈看作一個(gè)整體的狀態(tài)機(jī),每一個(gè)狀態(tài)都作為區(qū)塊鏈的整體狀態(tài),而區(qū)塊鏈的整體狀態(tài)由所有區(qū)塊鏈上賬戶的個(gè)體狀態(tài)構(gòu)成,個(gè)體狀態(tài)也被稱為賬戶狀態(tài),交易可以改變賬戶狀態(tài),在本文中,賬戶狀態(tài)寫作SB,其中,B為賬戶.

      定義1.區(qū)塊鏈的狀態(tài)機(jī)[21].區(qū)塊鏈的狀態(tài)機(jī)為一個(gè)四元組〈T,S,s0,δ〉,其中T為區(qū)塊鏈中所有的交易集合,S為區(qū)塊鏈的整體狀態(tài)集合,s0∈S為整體狀態(tài)集合中的初始狀態(tài),δ:S×T→S表示狀態(tài)的變遷由交易集合T中的交易觸發(fā).如果將交易集合看作交易事件集合,即將交易以事件的形式來表示,ET表示交易事件集合,因此,區(qū)塊鏈的狀態(tài)機(jī)也可以寫作〈ET,S,s0,δ〉.

      從區(qū)塊鏈的狀態(tài)機(jī)的結(jié)構(gòu)來看,對(duì)狀態(tài)機(jī)的記錄存在2種方向:

      1.2 交易與賬本的表示

      常用的記賬方式是基于賬本記賬的,賬戶轉(zhuǎn)賬的過程為:如果賬戶A需要向賬戶B付20元,由賬戶系統(tǒng)檢查賬戶B是否存在,接著再檢查賬戶A中是否存在20元,如果存在,從賬戶A中減少20元,在賬戶B中增加20元.UTXO模式為比特幣中經(jīng)典的記賬模式,表示未被花費(fèi)的輸出,即交易的輸入為其他交易沒有被花費(fèi)使用完畢的輸出,并且這筆交易來自于其他交易的輸出,其他交易的輸出必須有相應(yīng)賬戶的私鑰簽名,并且,交易的輸入總數(shù)與輸出總數(shù)持平.UTXO模式避免了交易的追溯,所有交易在無形中形成了1條鏈,在鏈中將所有交易的輸入與輸出連接在一起,如果當(dāng)前交易沒有被交易的用戶花費(fèi),而被其他用戶花費(fèi),可以增加1條記錄轉(zhuǎn)賬給自己的賬戶.

      在交易的基礎(chǔ)上定義賬本,賬本為交易的集合,更確切地說,為在區(qū)塊鏈中按照一定的順序排序的交易,所有的交易都存在著一個(gè)順序的概念.T為所有的交易集合,從交易集合中選取交易記錄在賬本上,并且按照時(shí)間的順序,將賬本L使用Lt來表示,Lt∈2T表示從交易集合T中選取交易加在賬本Lt上,并且按照時(shí)間t來排序.如果2個(gè)賬本合成,表示為L=L1+L2,L1,L2為2個(gè)不同的賬本.

      2 交易與狀態(tài)之間的約束

      上述單個(gè)交易改變單個(gè)狀態(tài)一般不會(huì)發(fā)生,一般1個(gè)交易都要涉及2個(gè)以上的賬戶.將交易集合T分為轉(zhuǎn)賬交易集合以及合約交易集合,將轉(zhuǎn)賬交易集合拆分為發(fā)送交易集合與接收交易集合,相應(yīng)地,轉(zhuǎn)賬交易事件集合拆分為發(fā)送交易事件集合以及接收交易事件集合.可以看出,轉(zhuǎn)賬交易為發(fā)送以及接收2個(gè)過程,一定金額從1個(gè)賬戶發(fā)出,而另一個(gè)賬戶負(fù)責(zé)接收這些金額.因此,當(dāng)轉(zhuǎn)賬交易被拆分后,單個(gè)轉(zhuǎn)賬交易涉及的賬戶可能只有1個(gè).

      另一方面,在區(qū)塊鏈中還涉及一類交易事件,該類事件被稱為合約事件集合H,為區(qū)塊鏈中的用戶執(zhí)行合約時(shí)需要傳遞消息的過程,轉(zhuǎn)賬交易涉及的是具體金額,可能以代幣的形式存在,而合約事件為了執(zhí)行合約,涉及的是消息,而在區(qū)塊鏈中,隨著智能合約使用率的提高,當(dāng)某一條件觸發(fā)自動(dòng)執(zhí)行設(shè)計(jì)好的合約,自動(dòng)執(zhí)行智能合約的代碼.合約事件集合可以進(jìn)一步被拆分為合約請(qǐng)求事件集合以及合約響應(yīng)事件,如果從合約請(qǐng)求事件集合以及合約響應(yīng)事件中各選取1個(gè)事件,當(dāng)恰好該合約請(qǐng)求事件的響應(yīng)為另一個(gè)合約響應(yīng)事件,那么這2個(gè)事件為1對(duì)合約事件.交易事件存在交叉關(guān)系以及平行關(guān)系:如果交易事件為轉(zhuǎn)賬事件,并且該轉(zhuǎn)賬事件與另一個(gè)轉(zhuǎn)賬事件存在轉(zhuǎn)賬關(guān)系,例如轉(zhuǎn)賬事件的輸入為另一個(gè)轉(zhuǎn)賬事件的輸出,稱2個(gè)轉(zhuǎn)賬事件存在交叉關(guān)系;如果交易事件涉及的賬戶為不同的賬戶,那么稱2個(gè)交易事件具有平行關(guān)系.

      3 交易事件的偏序關(guān)系

      在區(qū)塊鏈中運(yùn)用了時(shí)間戳的概念,在區(qū)塊上打上時(shí)間戳,可以看出,區(qū)塊鏈與時(shí)間息息相關(guān),時(shí)間的運(yùn)用不僅涉及區(qū)塊鏈中各種信息的排序問題[22]以及信息之間的時(shí)間關(guān)系,還涉及了區(qū)塊鏈中相關(guān)條款的實(shí)行.例如在記賬的過程中,涉及首先計(jì)算出難度值的那個(gè)用戶,獲得記賬權(quán).而時(shí)間的判定主要取決于2個(gè)方面:第1個(gè)方面是事件發(fā)生的確切時(shí)間點(diǎn),如果用統(tǒng)一的全局時(shí)鐘進(jìn)行計(jì)時(shí),必然存在時(shí)鐘的延遲問題以及怎么樣將計(jì)時(shí)的時(shí)間同步,如果用各自的局部時(shí)鐘計(jì)時(shí),必然存在時(shí)間之間的判定關(guān)系.第2個(gè)方面是事件之間發(fā)生時(shí)間的先后關(guān)系怎樣劃定,確定了事件發(fā)生的時(shí)間先后關(guān)系,才能劃定事件之間的偏序關(guān)系,將事件之間有效地組織起來.

      3.1 交易事件的嚴(yán)格時(shí)間偏序關(guān)系

      3.2 交易事件之間的寬松時(shí)間偏序關(guān)系

      時(shí)間區(qū)間I1與I2之間的并集與交集可寫作:

      圖1 交易事件之間的時(shí)間區(qū)間比較關(guān)系

      3.3 交易事件的分類以及性質(zhì)

      當(dāng)交易事件為合約事件時(shí),合約事件eH被分為請(qǐng)求合約請(qǐng)求事件eask以及合約響應(yīng)事件ereq,必須將傳遞消息的時(shí)間納入考慮的范圍內(nèi),以此對(duì)時(shí)間進(jìn)行更新[24].2個(gè)請(qǐng)求合約請(qǐng)求事件集合eask以及合約響應(yīng)事件ereq之間存在先后關(guān)系,設(shè)eask發(fā)生的時(shí)間為task,并且發(fā)送請(qǐng)求信息m給合約響應(yīng)事件ereq,并且設(shè)合約響應(yīng)事件ereq接收到請(qǐng)求信息m的時(shí)間為treceive,合約響應(yīng)事件ereq發(fā)生的時(shí)間為treq,取treceive,treq兩者之中較大的值,將合約響應(yīng)事件ereq實(shí)際發(fā)生的時(shí)間更新為treq.當(dāng)eask發(fā)生的時(shí)間task與合約響應(yīng)事件ereq發(fā)生的時(shí)間treq存在task

      交易事件偏序的性質(zhì):

      3.4 交易事件之間偏序關(guān)系的圖形化表示

      當(dāng)交易事件之間的偏序關(guān)系判定完畢后,將交易事件的偏序關(guān)系使用圖形進(jìn)行表示,如圖2所示:

      圖2 交易事件的嚴(yán)格時(shí)間偏序關(guān)系

      圖3 交易事件的寬松時(shí)間偏序關(guān)系

      圖4 交易事件的并行關(guān)系

      圖5 交易事件的可能并行關(guān)系

      圖6 交易事件帶有轉(zhuǎn)賬信息的時(shí)間偏序關(guān)系

      所有交易事件進(jìn)行分解后,即轉(zhuǎn)賬交易事件被分為發(fā)送交易事件與接收交易事件,合約事件被分為請(qǐng)求合約請(qǐng)求事件以及合約響應(yīng)事件后,以方便圖形化整體表示,并將交易事件分配到相關(guān)賬戶之上.進(jìn)行交易事件分解的原因?yàn)榻灰资录话闵婕?個(gè)以上賬戶,無法分配到單一賬戶之上,交易的整體化圖形化表示如圖7所示:

      圖7 交易事件的偏序賬本表示

      4 交易的區(qū)塊鏈表示框架

      如果以切片為單位驗(yàn)證其中的交易,投票選用驗(yàn)證者來驗(yàn)證切片中的交易,選用需要隨機(jī)抽取用戶進(jìn)行驗(yàn)證.用戶可以是在區(qū)塊鏈上的所有用戶,也可以是申請(qǐng)驗(yàn)證的用戶,同時(shí)可以對(duì)用戶的權(quán)限進(jìn)行限制,如限制申請(qǐng)驗(yàn)證用戶的代幣數(shù)量,并且為了公平,可以將參與切片交易的用戶排除在外,當(dāng)23的驗(yàn)證者驗(yàn)證了切片中的交易,切片中的交易被確認(rèn).在對(duì)切片進(jìn)行隱私處理時(shí),可以設(shè)置隱私權(quán)限,切片中的交易事件只有同一個(gè)切片中的交易事件涉及的賬戶在時(shí)間段才能有權(quán)查看,而被驗(yàn)證后切片中的交易事件被封裝不可見.

      最后,可以以切片為單位,將其加入根鏈中,在加入前必須確認(rèn)切片中交易事件的完整性、驗(yàn)證的完整性、驗(yàn)證者的有效性,切片的先后連接關(guān)系以切片中的切片的結(jié)束時(shí)間或者切片的起始時(shí)間連接切片.

      5 結(jié)束語

      在區(qū)塊鏈中,由于記錄了用戶的所有交易,所以交易的數(shù)量在不斷增加,而不能減少,區(qū)塊鏈賬本會(huì)越來越龐大,所以迫切需要提高交易的處理速度以及可擴(kuò)展性.本文以此為出發(fā)點(diǎn),描述了一種區(qū)塊鏈中交易表示模型,不僅圍繞交易事件并將其周圍的理論完善,從而完善了交易事件的偏序賬本,增加了能夠并行處理交易以及根據(jù)賬戶查看交易兩大優(yōu)勢,并且在該偏序賬本之上定義類以及切片,以達(dá)到將交易事件分批處理的目的,大大增加交易事件處理的效率.

      下一步工作主要有:第一,完善交易的批量確認(rèn)機(jī)制,如果高速地、并行地處理大批量的交易,并且進(jìn)行交易確認(rèn),如何將確認(rèn)的任務(wù)分配給節(jié)點(diǎn),并給予獎(jiǎng)勵(lì)的機(jī)制;第二,如何在保障性能、擴(kuò)展性、安全性的基礎(chǔ)上,定義共識(shí)協(xié)議,并且保證從交易到共識(shí)、節(jié)點(diǎn)的權(quán)限等一個(gè)整體框架的統(tǒng)一性.

      猜你喜歡
      偏序賬本合約
      一圖讀懂“上海賬本”
      數(shù)說:重慶70年“賬本”展示
      基于有限辛空間的一致偏序集和Leonard對(duì)
      丟失的紅色賬本
      相對(duì)連續(xù)偏序集及其應(yīng)用
      丟失的紅色賬本
      可消偏序半群的可消偏序擴(kuò)張與商序同態(tài)
      偏序群S上S-偏序系的內(nèi)射包*
      合約必守,誰能例外!——對(duì)“情勢變更”制度不可寄于過高期望
      红河县| 江陵县| 建瓯市| 肥东县| 平果县| 梓潼县| 铜川市| 宝应县| 合阳县| 利津县| 垦利县| 涞源县| 河曲县| 北海市| 鸡东县| 富顺县| 恩施市| 元氏县| 密山市| 浑源县| 山西省| 越西县| 肃宁县| 青川县| 清流县| 天峨县| 栾川县| 富宁县| 包头市| 汽车| 巴东县| 靖安县| 营山县| 嫩江县| 龙门县| 合水县| 巴塘县| 蛟河市| 襄垣县| 天镇县| 芦溪县|