国产91丝袜在线播放_偷拍亚洲色图_欧美精品久久一区二区_不卡日本视频

學術咨詢服務,正當時......期刊天空網(wǎng)是可靠的職稱工作業(yè)績成果學術咨詢服務平臺!!!

基于區(qū)塊鏈的應用系統(tǒng)開發(fā)方法研究

發(fā)布時間:2020-01-16所屬分類:計算機職稱論文瀏覽:1

摘 要: 摘 要: 從區(qū)塊鏈的技術層面及應用層面分析其特征,并給出區(qū)塊鏈的分類.挖掘區(qū)塊鏈的設計需求,針對區(qū)塊鏈的一致性和可擴展性的應用需求進行深入分析.對區(qū)塊鏈的應用系統(tǒng)開發(fā)方法及區(qū)塊鏈建模進行研究,提出了賬戶區(qū)塊鏈(account blockchain,簡稱 ABC)和交易區(qū)塊

  摘 要: 從區(qū)塊鏈的技術層面及應用層面分析其特征,并給出區(qū)塊鏈的分類.挖掘區(qū)塊鏈的設計需求,針對區(qū)塊鏈的一致性和可擴展性的應用需求進行深入分析.對區(qū)塊鏈的應用系統(tǒng)開發(fā)方法及區(qū)塊鏈建模進行研究,提出了賬戶區(qū)塊鏈(account blockchain,簡稱 ABC)和交易區(qū)塊鏈(trading blockchain,簡稱 TBC)的雙鏈設計模型.對智能合約進行深入剖析,提出了鏈上代碼并行執(zhí)行模型應用原則.最后,對區(qū)塊鏈應用技術進行總結(jié)和展望.

基于區(qū)塊鏈的應用系統(tǒng)開發(fā)方法研究

  關鍵詞: 區(qū)塊鏈;ABC/TBC;鏈上代碼;區(qū)塊鏈應用需求

  1 區(qū)塊鏈簡介

  區(qū)塊鏈(blockchain)是由多獨立節(jié)點參與的分布式數(shù)據(jù)庫系統(tǒng),也可以理解為分布式賬簿(distributed ledger technology,簡稱 DLT),由這些節(jié)點共同維護.它的特點是不易篡改、很難偽造、可追溯.區(qū)塊鏈記錄所有發(fā)生交易的信息,過程高效透明,數(shù)據(jù)高度安全.凡是需要公正、公平、誠實的應用領域,都可以應用區(qū)塊鏈技術.

  區(qū)塊鏈把數(shù)據(jù)分成不同的區(qū)塊,每個區(qū)塊通過特定的信息鏈接到上一區(qū)塊的后面,前后順連,呈現(xiàn)一套完整的數(shù)據(jù).每個區(qū)塊的塊頭(block header)包含前一個區(qū)塊的哈希值(previous block Hash),該值是對前區(qū)塊的塊頭進行哈希函數(shù)計算(Hash function)而得到.區(qū)塊之間都會由這樣的哈希值與先前的區(qū)塊環(huán)環(huán)相扣形成一個鏈條, 如圖 1 所示.

  從技術層面上看,區(qū)塊鏈的核心要素包含以下 3 個方面.

  (1) 塊鏈結(jié)構(gòu):每一區(qū)塊有時間戳;都使用前一區(qū)塊的哈希加密信息;對每個交易進行驗證;

  (2) 多獨立拷貝存儲:每個節(jié)點都存儲同樣信息,享有同樣權(quán)利;獨立作業(yè);互相懷疑,互相監(jiān)督;

  (3) 拜占庭容錯:容忍少于三分之一的節(jié)點惡意作弊或被黑客攻擊,保證系統(tǒng)仍然能夠正常工作. 要素(1)指出,區(qū)塊鏈是一個“賬簿”;要素(2)指出,區(qū)塊鏈是一個“分布式賬簿”;而要素(3)指出,區(qū)塊鏈是一個 “一致性的同步分布式賬簿”.

  區(qū)塊鏈可選擇不同的加密方法,如 RSA、中國的國密算法[1]、Ed25519[2]等的簽名算法.根據(jù)區(qū)塊鏈自身特有的安全、極難篡改的特性,在金融領域外的很多應用場景中,使用簽名、解簽能夠達到足夠高的安全級別.

  各個節(jié)點在獨立作業(yè)的同時存儲著同樣的信息,并且擁有同樣的權(quán)利.如果這一點不能保障的話,就不可稱為區(qū)塊鏈.例如,若鏈上的某個節(jié)點有特殊的權(quán)利,甚至可以改變鏈上數(shù)據(jù),這樣的鏈就遠離了區(qū)塊鏈的真意.與現(xiàn)有的分布式存儲方式不同,區(qū)塊鏈分布式賬本是同步的,而不是在一個賬本形成之后,再制成多個備份.

  拜占庭將軍模型[3]的共識算法有串行與并行兩種. 

  拜占庭將軍模型于 1982 年出自 SRI Int’l,實用拜占庭共識協(xié)議 PBFT(practical byzantine fault tolerance)[4]是經(jīng)過多年研究,由 MIT 在 1999 年提出實用協(xié)議.交易與投票是串行的,建塊過程要經(jīng)過 3 次投票; 

  并發(fā)拜占庭共識協(xié)議 CBFT(concurrent byzantine fault tolerance)是由作者的團隊于 2015 年提出,此項算法將交易與投票并行進行. 以比特幣的區(qū)塊鏈為代表的第 1 代區(qū)塊鏈并未使用拜占庭將軍算法.比特幣和以太坊的公有區(qū)塊鏈使用 PoW(51%的投票) [5,6].作為第 2 代區(qū)塊鏈的代表,以太坊的私有鏈選用了 PBFT.作為第 3 代區(qū)塊鏈的代表,北航鏈使用的是 CBFT,提高了性能.

  從應用層面,區(qū)塊鏈具有以下重要特征.

  (1) 極難篡改性.一旦數(shù)據(jù)進入了區(qū)塊鏈,即使是系統(tǒng)內(nèi)部的工作人員,在區(qū)塊鏈中也無法做任何更改.因此,區(qū)塊鏈系統(tǒng)是可以被信賴的.這種極難更改的特點不是來自使用某種操作,而是由于區(qū)塊鏈自身的機制;

  (2) 鏈上代碼(chaincode).區(qū)塊鏈載入的合同或法律文件為可執(zhí)行的程序,在條件都滿足時,會讓法律事務自動生成,這就是所謂的“鏈上代碼”,在以太坊里也稱為“智能和約”[7];

  (3) 參與交易的每個人都擁有完整的數(shù)據(jù),每個人可以用自己的數(shù)據(jù)來做決定;

  (4) 每個人都有完整的歷史數(shù)據(jù),因此很難被其他人欺騙.區(qū)塊鏈可以為相互不信任的人建立一種信任網(wǎng)絡,每個人可以進行交易而不需要知道對方是什么人,因為每個人都有完整的數(shù)據(jù),每個人都信任自己的數(shù)據(jù),而且知道自己的數(shù)據(jù)是有共識的;

  (5) 區(qū)塊鏈的架構(gòu)是分享的、分布式的、重復的,就地取材;

  (6) 區(qū)塊鏈與傳統(tǒng)的計算架構(gòu)不一樣.最簡單的方式是把原來的主-客架構(gòu)變成多個主人,這在傳統(tǒng)上被認為是不明智的方法.由于計算機硬件、通信及存儲的成本降低,同時,社會對安全性和防篡改性的需求提高,原來不明智的方式變成了最先進的方式.

  根據(jù)不同的應用領域特點,可以選擇不同類型的區(qū)塊鏈.一般分為公有鏈和許可鏈.

  1) 公有鏈:所有節(jié)點中立、開放,都可以投票、記賬、建塊.因為全網(wǎng)都需要投票,所以交易速度非常慢. 所有節(jié)點都可以參與投票,需要一個激勵機制,即挖礦機制.許多公有鏈是基于無政府主義理念而設計的,所以采用點對點或 P2P 網(wǎng)絡以躲避監(jiān)管.兩年前,比特幣網(wǎng)絡交易速度是每秒 7 筆[8],現(xiàn)在降到每秒 1.1 筆[9],而且越來越下降;

  相關知識推薦閱讀:軟件類的文章發(fā)什么期刊好些

  2) 許可鏈[10]:只有被許可的節(jié)點才能參與投票、記賬、建塊,包含私有鏈、聯(lián)盟鏈、企業(yè)鏈等所有非公有鏈.交易速度比較快;不需要挖礦,交易成本低;可成為監(jiān)管利器.北航鏈、天德鏈、Hyperledger[11]都是許可鏈,許可鏈會成為商業(yè)應用領域的主流[12]. 公有鏈與許可鏈的技術需求和架構(gòu)差異巨大,面臨的問題也不一樣.

  2 區(qū)塊鏈應用系統(tǒng)的需求與架構(gòu)設計

  2.1 區(qū)塊鏈應用系統(tǒng)的需求

  2.1.1 一致性需求

  在分布式環(huán)境下,數(shù)據(jù)為保證一致性需要使用一致性協(xié)議.公有鏈主要使用工作證明 PoW(proof of work)[5] 和股權(quán)證明 PoS(proof of stake)[6]機制;而許可鏈中主要使用 PBFT 和 CBFT.一般而言,區(qū)塊鏈系統(tǒng)越高速越好, 但是共識的代價昂貴,許多計算力及節(jié)點通信都花在共識機制上.例如,PBFT 需要 3 輪投票,每輪都采用廣播式通信方式.每次通信都需要簽名、解簽,再加上每筆交易都要簽名和解簽,因而,80%的計算力都花在共識處理上. 使用不同的共識算法會產(chǎn)生全然不同的區(qū)塊鏈架構(gòu)和流程,面臨的研究問題也不同.PoW(公有鏈)面臨的問題是速度和可擴展性,PBFT(許可鏈)面臨的問題是并發(fā).PoW 依靠節(jié)點的計算力來完成共識,PBFT 卻不需要.

  2.1.2 軟件設計需求

  區(qū)塊鏈不同于傳統(tǒng)數(shù)據(jù)庫.使用區(qū)塊鏈開發(fā)應用系統(tǒng)與傳統(tǒng)系統(tǒng)比較會有很多差異.例如,應用區(qū)塊鏈技術開發(fā)銀行系統(tǒng),可以省去很多中間環(huán)節(jié),簡化流程、節(jié)約成本.傳統(tǒng)的軟件架構(gòu)也會發(fā)生變化.例如,IBM 把傳統(tǒng)的 MVC(model,view,control)設計模式(design pattern)變?yōu)?MVBC(model,view,blockchain,control)[13].

  設計區(qū)塊鏈應用系統(tǒng)還有一個新問題,即,可以把功能放在應用系統(tǒng)上,或是放到區(qū)塊鏈上用鏈上代碼執(zhí)行.很多人都推崇鏈上代碼,可是鏈上代碼執(zhí)行會消耗大量的計算力.鏈上代碼需要建塊,而建塊是一項昂貴的運營流程,需要執(zhí)行共識協(xié)議.建議大部分的功能應該是在應用系統(tǒng)里,只有少數(shù)功能放在鏈上代碼里.

  2.1.3 可擴展性需求

  可擴展性一直是區(qū)塊鏈系統(tǒng)的一個挑戰(zhàn),從第一代比特幣區(qū)塊鏈到第二代以太坊區(qū)塊鏈都面臨嚴峻的問題.雖然有各式各樣的解決方案,但是每種方案都有它的缺陷.例如,以太坊提出可無限擴張白皮書里提到的方案,經(jīng)過了兩年仍然不能實現(xiàn).有些方案放棄區(qū)塊鏈的定義來解決可擴展性需求,例如 BigchainDB[14], RSCoin[10,15,16].他們放棄區(qū)塊鏈多拷貝的需求來提高交易速度.這些偏離傳統(tǒng)區(qū)塊鏈定義的系統(tǒng)是否能被接受還有待觀察.一般來說,這樣的系統(tǒng)因為放棄了多拷貝的需求,所以需要在其他方面補足來增加安全性.

  北航鏈的可擴展性分為 3 步(參考第 4.1 節(jié)及文獻[17]):(1) 使用 CBFT 并行的算法做拜占庭將軍投票,從而提高建塊速度;(2) 提出 ABC,TBC 雙鏈架構(gòu)[17],保護隱私、并行計算、節(jié)省計算力、簡化應用架構(gòu);(3) 利用 ABC,TBC 雙鏈的特點,使一條鏈可以在運行時分裂成兩條鏈,有兩套不同的硬件分別執(zhí)行這兩條鏈,以提高速度.有這 3 個機制,既可以使用原始定義的區(qū)塊鏈,又可以有高速以及可擴展性.

  2.1.4 數(shù)據(jù)庫需求

  區(qū)塊鏈雖然被稱為分布式數(shù)據(jù)庫,但是它的作業(yè)和傳統(tǒng)數(shù)據(jù)庫大不相同.不但與關系(relational)型數(shù)據(jù)庫不一樣,也與對象(object)數(shù)據(jù)庫、NoSQL 數(shù)據(jù)庫或時間(temporal)數(shù)據(jù)庫不一樣.高速區(qū)塊鏈與低速區(qū)塊鏈是截然不同的:在低速環(huán)境下,交易是用串行的方法來處理,所以低速區(qū)塊鏈的一致性問題不大;而高速環(huán)境下,交易和建塊是并行的,所以一致性是一個新問題.因為傳統(tǒng)數(shù)據(jù)庫是以個別交易,而區(qū)塊鏈是以建塊來維持一致性.

  區(qū)塊鏈一致性問題與傳統(tǒng)數(shù)據(jù)庫一致性問題不一樣,例如在區(qū)塊鏈里,每秒可以有上萬次交易,而每秒都可以有多塊被建立,所以每塊也可以有上萬次交易.這些交易中,可能有很多交易與同一個數(shù)據(jù)有關聯(lián).例如在央視微電影項目中,幾秒鐘之內(nèi)會有上萬人點播同一個視頻,所以在一塊里面,可能就要對同一個視頻有上千個點播.如果使用傳統(tǒng)數(shù)據(jù)庫,每次點播都是一個寫(write),而在同一個交易里面不可有一個以上的 write 在同一個數(shù)據(jù)上.可是在央視微電影平臺上,必須允許同時在一個塊中有上千個 write 作用在同一個數(shù)據(jù)上.

  2.1.5 鏈上代碼需求

  鏈上代碼原被稱為求問題與傳統(tǒng)(smart contract),給人們的印象是既智能又受法律保護的合約.但事實上兩者都不是.傳統(tǒng)的智能合約沒有匹配的法律框架,不是有效力的法律合同.智能合約的參與者亦沒有相關的法律條文及框架來保護.如果加上法律框架的支撐,鏈上代碼可以成為合約.

  鏈上代碼的執(zhí)行與建塊息息相關,所以它的執(zhí)行模型與建塊流程相互影響,以至于鏈上代碼在理論上變成一個很難的問題.問題難處在于:每次建塊時,需要尋找必須要啟動的鏈上代碼,而且在一些鏈上代碼系統(tǒng)里,那些代碼必須完成執(zhí)行之后才能建塊.如果涉及的數(shù)據(jù)很多,而且鏈上代碼很復雜,這將造成鏈上代碼與建塊沖突.雖然理論上鏈上代碼是一個很難的問題,但是在實際系統(tǒng)中仍然可用.第 3.3 節(jié)將討論一些實際解決方案.

  2.2 北航鏈的體系架構(gòu)

  北航鏈是北京航空航天大學與北京大學聯(lián)合開發(fā)的許可鏈,其設計初衷是為公信和金融服務,北航鏈摒棄了 P2P 網(wǎng)絡[18,19]和挖礦機制[5],以可擴展性為第一目標[20],并且重視速度優(yōu)化.為了確保系統(tǒng)安全,北航鏈加入了節(jié)點信用制度.這是首次采用信譽機制(reputation system)來識別作弊節(jié)點,一旦發(fā)現(xiàn)節(jié)點的作弊行為,立即將其排除在投票節(jié)點之外.

  在北航鏈的設計中,拜占庭式投票和數(shù)據(jù)采集可同時進行,加快了信息處理速度,具有獨特的建塊過程.此外,對每個交易進行投票.為了確保安全,也對塊的投票結(jié)果投票,判斷是否有叛徒節(jié)點.由于有 4 輪投票,將產(chǎn)生更多的信息(每輪產(chǎn)生 O(N2 )個消息);北航鏈采用并發(fā)操作,所以速度快.另外,北航鏈還設計了一整套可擴展的機制,例如 ABC(account blockchain),TBC(trading blockchain)雙鏈架構(gòu)及區(qū)塊鏈云架構(gòu).可擴展機制使得區(qū)塊鏈具有高吞吐性、低延遲性以及高隱私性.有了這樣的機制,當工作量請求增加的時候,只要增加機器就能夠處理, 從而實現(xiàn)負載均衡.圖 2 是北航鏈架構(gòu)圖. 

  存儲層:存儲層包括操作系統(tǒng)和數(shù)據(jù)庫服務; 

  基礎區(qū)塊鏈層:傳輸服務將緩存中的交易放入桶中;塊服務為每個桶中的交易創(chuàng)建位圖;Round Robin 使用循環(huán)法選擇線索,創(chuàng)建并向所有其他節(jié)點發(fā)送塊,進一步執(zhí)行信譽計算;同步器廣播本地區(qū)塊鏈的長度,接收遺漏的塊,并存儲接收的塊;ABC(帳戶區(qū)塊鏈)同步區(qū)塊鏈,以確保不同節(jié)點的一致狀態(tài),創(chuàng)建帳戶索引以加速查詢,并提供帳戶公私密鑰服務;對于鏈上代碼交易,TBC(交易區(qū)塊鏈)首先執(zhí)行鏈上代碼,然后將結(jié)果放入桶中,對于非鏈上代碼交易,直接放入桶中,并準備創(chuàng)建塊; 

  緩存層:用于緩存內(nèi)存中的臨時信息,包括從用戶和鏈上代碼接收的新交易;那些塊尚未傳輸?shù)酱疟P;并且支持系統(tǒng)運行的臨時數(shù)據(jù)存儲; 

  API 層:提供了外部和內(nèi)部 API 接口.內(nèi)部 API 用于節(jié)點之間的內(nèi)部通信,例如投票、廣播塊;外部 API 用于外部用戶,例如接受新交易和查詢操作; 

  鏈上代碼層:提供與合同相關的服務.鏈上代碼根據(jù)領域特定要求編寫,由所有利益相關者進行合法正確性驗證,然后部署在區(qū)塊鏈系統(tǒng)中執(zhí)行.該層具有 3 個功能:與用戶的交互(編輯)、流程執(zhí)行引擎和支持帳戶管理、狀態(tài)存儲和發(fā)送交易的合同服務; 

  應用層:此層有應用程序,例如銀行系統(tǒng)、計算法律系統(tǒng)、信用認證系統(tǒng)和供應鏈系統(tǒng).在設計區(qū)塊鏈時,節(jié)點越多,系統(tǒng)越安全,但是共識起來會更慢,所耗的計算力越大.

  2.3 區(qū)塊鏈接口設計

  OBCC(open blockchain connector)是一套區(qū)塊鏈的統(tǒng)一接口,提供應用方便高效地使用區(qū)塊鏈的功能,包括將用戶數(shù)據(jù)存入?yún)^(qū)塊鏈、查詢用戶需要的信息,如圖 3 所示. 寫入?yún)^(qū)塊鏈的接口定義為 put(action,data),其中, 

  參數(shù) action 表明用戶的數(shù)據(jù)處理意圖,可以是 create,insert, update 或 delete.注意:區(qū)塊鏈是不能更改已經(jīng)存入?yún)^(qū)塊鏈的數(shù)據(jù),這里的 update 和 delete 不是像數(shù)據(jù)庫那樣對數(shù)據(jù)執(zhí)行 update 或 delete,而是在區(qū)塊鏈上記錄下對數(shù)據(jù)所發(fā)生過的操作,即,作為一筆新交易記錄在案; 

  參數(shù) data 是用戶的數(shù)據(jù),根據(jù)不同的應用領域,格式和內(nèi)容會不同.

  區(qū)塊鏈查詢接口定義為 get(condition),其中,參數(shù) condition 表明用戶的查詢條件,可以是塊的哈希值或交易的哈希值,也可以與應用有關的關鍵字等.倒排索引、大數(shù)據(jù)分析技術的使用,使得用戶可以快速高效地獲取有價值的查詢結(jié)果.

  OBCC 提供一個工具包,用戶可以把它導入到自己的軟件項目工程里,編程開發(fā)時,像是調(diào)用本地函數(shù)或方法一樣使用區(qū)塊鏈的功能接口.當用戶程序需要調(diào)用區(qū)塊鏈的功能時,由 OBCC 客戶端代理將請求廣播到各個區(qū)塊鏈節(jié)點 OBCC 服務器端代理,該代理負責調(diào)用區(qū)塊鏈的相關功能進行處理,最終存入?yún)^(qū)塊鏈或查詢到信息并返回.如圖 4 所示.

  本文實現(xiàn)了 Java 版的區(qū)塊鏈連接器——JBCC,已經(jīng)支持多個區(qū)塊鏈的應用系統(tǒng)的開發(fā),包括央視微電影管理平臺、高校學籍及檔案管理系統(tǒng)、金融跨國支付系統(tǒng)、銀行信用卡消費管理系統(tǒng)、跨行業(yè)積分跟蹤管理系統(tǒng).基于 OBCC 的區(qū)塊鏈的應用系統(tǒng)開發(fā),具有開發(fā)周期短、可擴展性高、運行速度快的特點.

最新分區(qū)查詢?nèi)肟?/a>

SCISSCIAHCI

主站蜘蛛池模板: 甘泉县| 巴青县| 中阳县| 西乌珠穆沁旗| 谷城县| 湖口县| 山西省| 沂水县| 江津市| 定州市| 德兴市| 牟定县| 尖扎县| 班戈县| 营口市| 定结县| 梁平县| 墨脱县| 大名县| 邵阳市| 张掖市| 尼勒克县| 平江县| 剑河县| 进贤县| 新化县| 中江县| 武城县| 昌图县| 湟中县| 临夏市| 长顺县| 扬州市| 邳州市| 萝北县| 雷波县| 大石桥市| 沁阳市| 屏东县| 六安市| 江城|