成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

MiracleWong / 1505人閱讀

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

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

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

設計概述

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

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

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

模塊圖

實現概述

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

系統(tǒng)代理合約

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

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

主要接口如下:

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

NodeAction.sol是節(jié)點管理模塊的實現合約。它實現了對網絡中所有節(jié)點列表信息的登記、管理、維護功能。每當網絡中有節(jié)點加入或退出都必須與節(jié)點管理合約進行交互。

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

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

節(jié)點信息的數據結構是:

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

主要接口如下:

接口 輸入參數 輸出參數 說明
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é)點信息已存在,則忽略
cancelNode string _id #節(jié)點身份ID bool #注冊結果 注銷節(jié)點,若該節(jié)點信息不存在,則忽略
機構證書合約

CAAction.sol是機構證書模塊的實現合約。它實現了對網絡中所有節(jié)點的機構證書信息的登記、管理、維護功能。當網絡啟用機構證書驗證功能的情況下,網絡中節(jié)點加入或退出都需要與機構證書合約進行交互。

機構證書的數據結構是:

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

主要接口如下:

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

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

當前FISCO BCOS權限管理模塊主要由TransactionFilterChain.sol、TransactionFilterBase.sol、AuthorityFilter.sol、Group.sol四個合約來實現。

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

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

Group是對角色的實現。它內部維護了該角色的所有權限項的mapping標志位。

主要接口如下:

合約 接口 輸入參數 輸出參數 說明
TransactionFilterBase process address origin, address from, address to, string func, string input# 用戶外部賬戶、交易發(fā)起賬戶、合約地址、合約接口、交易輸入數據 bool#處理結果 權限檢查
Group setPermission address to, string func, bool perrmission# 合約地址、合約接口、權限標記 bool#處理結果 設置角色權限項
全網配置合約

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

ConfigAction.sol的內部實現中維護了配置項信息的mapping 成員變量。

主要接口如下:

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

當前FISCO BCOS主要有以下全網配置項:

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

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

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

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

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

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

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

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

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

示例2-自定義業(yè)務權限Filter合約

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

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

部署業(yè)務權限Filter合約,獲得對應的合約地址。

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

調用TransactionFilterChain合約的addFilter接口,將業(yè)務權限Filter合約地址注冊到Filter合約列表中。

至此,業(yè)務權限Filter合約已經啟用。

獲取更多精彩內容

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

轉載請注明本文地址:http://m.hztianpu.com/yun/23968.html

相關文章

  • SegmentFault 技術周刊 Vol.41 - 深入學習區(qū)塊

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

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

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

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

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

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

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

    PumpkinDylan 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<