成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

區(qū)塊鏈技術(shù):區(qū)塊鏈系統(tǒng)合約介紹

MiracleWong / 1455人閱讀

摘要:系統(tǒng)合約介紹一鍵部署區(qū)塊鏈,快速體驗系統(tǒng)合約設(shè)計概述區(qū)塊鏈為了滿足準(zhǔn)入控制身份認(rèn)證配置管理權(quán)限管理等需求,在網(wǎng)絡(luò)啟動之初,會部署一套功能強(qiáng)大結(jié)構(gòu)靈活且支持自定義擴(kuò)展的智能合約,統(tǒng)稱系統(tǒng)合約。它對區(qū)塊鏈核心提供了統(tǒng)一的權(quán)限檢查接口。

FISCO BCOS系統(tǒng)合約介紹

一鍵部署區(qū)塊鏈,快速體驗系統(tǒng)合約

設(shè)計概述

FISCO BCOS區(qū)塊鏈為了滿足準(zhǔn)入控制、身份認(rèn)證、配置管理、權(quán)限管理等需求,在網(wǎng)絡(luò)啟動之初,會部署一套功能強(qiáng)大、結(jié)構(gòu)靈活且支持自定義擴(kuò)展的智能合約,統(tǒng)稱系統(tǒng)合約。

系統(tǒng)合約原則上由區(qū)塊鏈管理員在網(wǎng)絡(luò)啟動之初部署全網(wǎng)生效。若是在網(wǎng)絡(luò)運行期間重新部署變更升級,則需要在全網(wǎng)所有節(jié)點許可的情況下由區(qū)塊鏈管理員來執(zhí)行操作。

當(dāng)前FISCO BCOS系統(tǒng)合約主要有五個模塊,系統(tǒng)代理模塊、節(jié)點管理模塊、機(jī)構(gòu)證書模塊、權(quán)限管理模塊、全網(wǎng)配置模塊。系統(tǒng)合約的模塊可以根據(jù)需要自定義擴(kuò)展,它既可以供區(qū)塊鏈核心調(diào)用也可以對DAPP提供服務(wù)。每個模塊由一個或多個智能合約來實現(xiàn)。模塊結(jié)構(gòu)圖如下:

模塊圖

實現(xiàn)概述

當(dāng)前FISCO BCOS對系統(tǒng)代理模塊、節(jié)點管理模塊、機(jī)構(gòu)證書模塊、權(quán)限管理模塊、全網(wǎng)配置模塊都做了對應(yīng)的合約實現(xiàn)。合約源代碼目錄為systemcontractv2/。下面依次介紹各個合約實現(xiàn)的接口與邏輯。

系統(tǒng)代理合約

SystemProxy.sol是系統(tǒng)代理模塊的實現(xiàn)合約。它實現(xiàn)了路由到合約地址的命名服務(wù),提供了系統(tǒng)合約的統(tǒng)一入口。內(nèi)部實現(xiàn)中是通過mapping類型成員變量_routes來維護(hù)所有的路由表信息。路由表信息項的數(shù)據(jù)結(jié)構(gòu)主要是:

struct SystemContract {
        address _addr;        #合約地址
        bool _cache;        #緩存標(biāo)志位
        uint _blocknumber;    #生效區(qū)塊高度
    }    

主要接口如下:

接口 輸入?yún)?shù) 輸出參數(shù) 說明
getRoute string key#路由名稱 address, bool,uint # 合約地址,緩存標(biāo)志位,生效區(qū)塊高度 獲取路由信息
setRoute string key, address addr, bool cache# 路由名稱,合約地址,緩存標(biāo)志位,生效區(qū)塊高度 設(shè)置路由信息,若該路由名稱已存在,則覆蓋
節(jié)點管理合約

NodeAction.sol是節(jié)點管理模塊的實現(xiàn)合約。它實現(xiàn)了對網(wǎng)絡(luò)中所有節(jié)點列表信息的登記、管理、維護(hù)功能。每當(dāng)網(wǎng)絡(luò)中有節(jié)點加入或退出都必須與節(jié)點管理合約進(jìn)行交互。

在FISCO BCOS中節(jié)點分為三種類型:核心節(jié)點、全節(jié)點、輕節(jié)點。

enum NodeType{
        None,
        Core,   //核心 
        Full,   //全節(jié)點 
        Light   //輕節(jié)點 
    }

節(jié)點信息的數(shù)據(jù)結(jié)構(gòu)是:

struct NodeInfo{
        string        id;           #節(jié)點身份ID    
        string        ip;         #機(jī)器IP       
        uint        port;        #機(jī)器端口
        NodeType    category;    #節(jié)點類型
        string        desc;        #節(jié)點描述 
        string        CAhash;      #節(jié)點機(jī)構(gòu)證書哈希
        string        agencyinfo; #節(jié)點其他信息
        uint        idx;        #節(jié)點序號
        uint        blocknumber;#區(qū)塊高度
    }

主要接口如下:

接口 輸入?yún)?shù) 輸出參數(shù) 說明
registerNode string _id,string _ip,uint _port,NodeType _category,string _desc,string _CAhash,string _agencyinfo,uint _idx #節(jié)點身份ID、IP、端口、節(jié)點類型、節(jié)點描述、節(jié)點CA哈希、節(jié)點agency、節(jié)點序號 bool #注冊結(jié)果 注冊節(jié)點 ,若該節(jié)點信息已存在,則忽略
cancelNode string _id #節(jié)點身份ID bool #注冊結(jié)果 注銷節(jié)點,若該節(jié)點信息不存在,則忽略
機(jī)構(gòu)證書合約

CAAction.sol是機(jī)構(gòu)證書模塊的實現(xiàn)合約。它實現(xiàn)了對網(wǎng)絡(luò)中所有節(jié)點的機(jī)構(gòu)證書信息的登記、管理、維護(hù)功能。當(dāng)網(wǎng)絡(luò)啟用機(jī)構(gòu)證書驗證功能的情況下,網(wǎng)絡(luò)中節(jié)點加入或退出都需要與機(jī)構(gòu)證書合約進(jìn)行交互。

機(jī)構(gòu)證書的數(shù)據(jù)結(jié)構(gòu)是:

struct CaInfo{
        string  hash;        #節(jié)點機(jī)構(gòu)證書哈希
        string pubkey;        #證書公鑰
        string orgname;        #機(jī)構(gòu)名稱
        uint notbefore;        #證書啟用日期
        uint notafter;        #證書失效時間
        CaStatus status;    #證書狀態(tài)
        string    whitelist;#IP白名單
        string    blacklist;#IP黑名單
        uint    blocknumber;#生效區(qū)塊高度
      }

主要接口如下:

接口 輸入?yún)?shù) 輸出參數(shù) 說明
update string _hash,string _pubkey,string _orgname,uint _notbefore,uint _notafter,CaStatus _status,string _whitelist,string _blacklist # 證書哈希、證書公鑰、機(jī)構(gòu)名稱、 證書啟用日期、 證書失效時間、證書狀態(tài)、IP白名單、IP黑名單 bool #更新結(jié)果 更新證書信息, 若該證書信息不存在,則新建證書記錄
get string _hash#證書哈希 string,string,string,uint,uint,CaStatus,uint# 證書哈希、證書公鑰、機(jī)構(gòu)名稱、證書啟用日期、證書失效時間、證書狀態(tài)、生效區(qū)塊塊號 查詢證書信息
權(quán)限管理合約

FISCO BCOS基于角色的身份權(quán)限設(shè)計有三要點:一個外部賬戶只屬于一個角色;一個角色擁有一個權(quán)限項列表; 一個權(quán)限項由合約地址加上合約接口來唯一標(biāo)識。

當(dāng)前FISCO BCOS權(quán)限管理模塊主要由TransactionFilterChain.sol、TransactionFilterBase.sol、AuthorityFilter.sol、Group.sol四個合約來實現(xiàn)。

TransactionFilterChain是對Filter模型的實現(xiàn)框架。它在內(nèi)部維護(hù)了一個實現(xiàn)繼承于TransactionFilterBase的Filter合約地址列表。它對區(qū)塊鏈核心提供了統(tǒng)一的權(quán)限檢查接口process。process執(zhí)行過程中會對Filter合約地址列表中的所有Filter依次執(zhí)行process函數(shù),以完成所有需要的權(quán)限檢查。

TransactionFilterBase是Filter的基類合約。所有Filter必須要實現(xiàn)它的process接口。AuthorityFilter是繼承于TransactionFilterBase的角色權(quán)限Filter實現(xiàn)。它的process接口實現(xiàn)了對用戶所屬角色組的權(quán)限項進(jìn)行檢查邏輯。

Group是對角色的實現(xiàn)。它內(nèi)部維護(hù)了該角色的所有權(quán)限項的mapping標(biāo)志位。

主要接口如下:

合約 接口 輸入?yún)?shù) 輸出參數(shù) 說明
TransactionFilterBase process address origin, address from, address to, string func, string input# 用戶外部賬戶、交易發(fā)起賬戶、合約地址、合約接口、交易輸入數(shù)據(jù) bool#處理結(jié)果 權(quán)限檢查
Group setPermission address to, string func, bool perrmission# 合約地址、合約接口、權(quán)限標(biāo)記 bool#處理結(jié)果 設(shè)置角色權(quán)限項
全網(wǎng)配置合約

ConfigAction.sol是全網(wǎng)配置模塊的實現(xiàn)合約。它維護(hù)了FISCO BCOS區(qū)塊鏈中全網(wǎng)運行的可配置信息。 配置信息可以通過交易廣播上鏈來達(dá)到全網(wǎng)配置的一致性更新。原則上只能由區(qū)塊鏈管理員來發(fā)出全網(wǎng)配置更新交易。

ConfigAction.sol的內(nèi)部實現(xiàn)中維護(hù)了配置項信息的mapping 成員變量。

主要接口如下:

接口 輸入?yún)?shù) 輸出參數(shù) 說明
set string key, string value# 配置項、配置值 設(shè)置配置項
get string key #配置項 string, uint# 配置值、生效區(qū)塊高度 查詢配置值

當(dāng)前FISCO BCOS主要有以下全網(wǎng)配置項:

配置項 說明 默認(rèn)值 推薦值
maxBlockHeadGas 塊最大GAS (16進(jìn)制) 200000000 20000000000
intervalBlockTime 塊間隔(ms) (16進(jìn)制) 1000 1000
maxBlockTranscations 塊最大交易數(shù)(16進(jìn)制) 1000 1000
maxNonceCheckBlock 交易nonce檢查最大塊范圍(16進(jìn)制) 1000 1000
maxBlockLimit blockLimit超過當(dāng)前塊號的偏移最大值(16進(jìn)制) 1000 1000
maxTranscationGas 交易的最大gas(16進(jìn)制) 20000000 20000000
CAVerify CA驗證開關(guān) FALSE FALSE
自定義擴(kuò)展 示例1-自定義業(yè)務(wù)配置合約

假設(shè)業(yè)務(wù)需要利用系統(tǒng)合約框架,自定義業(yè)務(wù)配置合約以對業(yè)務(wù)相關(guān)合約提供配置服務(wù)。大體可以參考以下步驟來擴(kuò)展:

根據(jù)業(yè)務(wù)合約需求,實現(xiàn)業(yè)務(wù)配置合約的設(shè)置配置項接口set和查詢配置值接口get。

部署業(yè)務(wù)配置合約,獲得業(yè)務(wù)配置合約鏈上地址。

調(diào)用系統(tǒng)代理合約SystemProxy的setRoute接口,將業(yè)務(wù)配置合約地址注冊到路由表中。

至此,業(yè)務(wù)配置合約已經(jīng)完成在系統(tǒng)代理合約的路由注冊,已可在業(yè)務(wù)交易中調(diào)用。

業(yè)務(wù)配置合約的使用方法:

調(diào)用SystemProxy的getRoute接口運行時獲得業(yè)務(wù)配置合約地址。

通過業(yè)務(wù)配置合約地址調(diào)用查詢配置值接口get獲得配置值。

示例2-自定義業(yè)務(wù)權(quán)限Filter合約

假設(shè)業(yè)務(wù)需要增加業(yè)務(wù)權(quán)限校驗邏輯,則可以利用權(quán)限管理合約的Filter機(jī)制來無縫擴(kuò)展。大體可以參考以下步驟來擴(kuò)展:

繼承于TransactionFilterBase實現(xiàn)一個業(yè)務(wù)權(quán)限Filter合約,業(yè)務(wù)權(quán)限Filter合約根據(jù)業(yè)務(wù)需要的權(quán)限校驗邏輯實現(xiàn)process接口。

部署業(yè)務(wù)權(quán)限Filter合約,獲得對應(yīng)的合約地址。

調(diào)用系統(tǒng)代理合約SystemProxy的getRoute接口,獲得TransactionFilterChain合約地址。

調(diào)用TransactionFilterChain合約的addFilter接口,將業(yè)務(wù)權(quán)限Filter合約地址注冊到Filter合約列表中。

至此,業(yè)務(wù)權(quán)限Filter合約已經(jīng)啟用。

獲取更多精彩內(nèi)容

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/23968.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.41 - 深入學(xué)習(xí)區(qū)塊

    摘要:和比特幣協(xié)議有所不同的是,以太坊的設(shè)計十分靈活,極具適應(yīng)性。超級賬本區(qū)塊鏈的商業(yè)應(yīng)用超級賬本超級賬本是基金會下的眾多項目中的一個。證書頒發(fā)機(jī)構(gòu)負(fù)責(zé)簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開始 一個故事告訴你比特幣的原理及運作機(jī)制 這篇文章的定位會比較科普,盡量用類比的方法將比特幣的基本原理講出來...

    qianfeng 評論0 收藏0
  • 以太坊、EOS和Hyperledger等不同區(qū)塊的比較

    摘要:以太坊背后的主要人物是。以太坊通過在區(qū)塊鏈上引入智能合約,徹底改變了加密世界。以太坊使用名為以太坊虛擬機(jī)的虛擬機(jī)執(zhí)行其智能合約。以太坊最終將利用協(xié)議轉(zhuǎn)向權(quán)益證明。截至目前,以太坊在可擴(kuò)展性方面都失敗了。 不同的區(qū)塊鏈智能合約和區(qū)塊鏈技術(shù)現(xiàn)在風(fēng)靡一時。越來越多的人出于某種原因試圖進(jìn)入這個神奇的世界。如果你是這項技術(shù)的新手并正在尋找基于區(qū)塊鏈的開發(fā)平臺的快速入門,那么本指南非常適合你。我們...

    harriszh 評論0 收藏0
  • 智能合約實施指南

    摘要:在協(xié)議結(jié)束時,智能合約被視為已履行并仍存儲在區(qū)塊鏈網(wǎng)絡(luò)中。這組條件和事件代表了最基本的一次性智能合約。智能合約用例智能合約越來越受歡迎,并已在各種區(qū)塊鏈項目中實施。 與區(qū)塊鏈技術(shù)一樣,智能合約在商業(yè)領(lǐng)域也非常有價值。 為了讓我們的讀者徹底了解智能合約是什么以及它們?nèi)绾斡绊懍F(xiàn)代商業(yè)的交易方式,我們準(zhǔn)備了本指南。 集中商業(yè)模式正在給去中心化的模式讓路 傳統(tǒng)的商業(yè)關(guān)系模型都是集中式的,始終存...

    meteor199 評論0 收藏0
  • 智能合約實施指南

    摘要:在協(xié)議結(jié)束時,智能合約被視為已履行并仍存儲在區(qū)塊鏈網(wǎng)絡(luò)中。這組條件和事件代表了最基本的一次性智能合約。智能合約用例智能合約越來越受歡迎,并已在各種區(qū)塊鏈項目中實施。 與區(qū)塊鏈技術(shù)一樣,智能合約在商業(yè)領(lǐng)域也非常有價值。 為了讓我們的讀者徹底了解智能合約是什么以及它們?nèi)绾斡绊懍F(xiàn)代商業(yè)的交易方式,我們準(zhǔn)備了本指南。 集中商業(yè)模式正在給去中心化的模式讓路 傳統(tǒng)的商業(yè)關(guān)系模型都是集中式的,始終存...

    PumpkinDylan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<