亚洲h色精品,亚洲精品久久久久,欧美激情一二三区,成人影院入口

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

基于區塊鏈的應用系統開發方法研究

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

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

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

基于區塊鏈的應用系統開發方法研究

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

  1 區塊鏈簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2 區塊鏈應用系統的需求與架構設計

  2.1 區塊鏈應用系統的需求

  2.1.1 一致性需求

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

  2.1.2 軟件設計需求

  區塊鏈不同于傳統數據庫.使用區塊鏈開發應用系統與傳統系統比較會有很多差異.例如,應用區塊鏈技術開發銀行系統,可以省去很多中間環節,簡化流程、節約成本.傳統的軟件架構也會發生變化.例如,IBM 把傳統的 MVC(model,view,control)設計模式(design pattern)變為 MVBC(model,view,blockchain,control)[13].

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

  2.1.3 可擴展性需求

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

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

  2.1.4 數據庫需求

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

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

  2.1.5 鏈上代碼需求

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

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

  2.2 北航鏈的體系架構

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

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

  存儲層:存儲層包括操作系統和數據庫服務; 

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

  緩存層:用于緩存內存中的臨時信息,包括從用戶和鏈上代碼接收的新交易;那些塊尚未傳輸到磁盤;并且支持系統運行的臨時數據存儲; 

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

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

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

  2.3 區塊鏈接口設計

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

  參數 action 表明用戶的數據處理意圖,可以是 create,insert, update 或 delete.注意:區塊鏈是不能更改已經存入區塊鏈的數據,這里的 update 和 delete 不是像數據庫那樣對數據執行 update 或 delete,而是在區塊鏈上記錄下對數據所發生過的操作,即,作為一筆新交易記錄在案; 

  參數 data 是用戶的數據,根據不同的應用領域,格式和內容會不同.

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

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

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

2023最新分區查詢入口

SCISSCIAHCI

主站蜘蛛池模板: 东台市| 板桥市| 宜丰县| 海宁市| 梓潼县| 涟水县| 万州区| 开原市| 长汀县| 贺州市| 山阳县| 龙江县| 河津市| 迁安市| 蕲春县| 松原市| 孟州市| 盐山县| 花莲县| 浦江县| 西和县| 盐津县| 新化县| 康定县| 东丰县| 凤翔县| 抚顺县| 祁阳县| 巩留县| 临城县| 鄂温| 诏安县| 禄丰县| 名山县| 太白县| 永康市| 东丽区| 双江| 莫力| 郎溪县| 开江县|