<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java隨記

    堅(jiān)持就是勝利!

     

    Fabric 1.1源代碼分析(3) 系統(tǒng)鏈碼執(zhí)行過(guò)程示例(弟弟篇)

    # Fabric 1.1源代碼分析(3) 系統(tǒng)鏈碼執(zhí)行過(guò)程
    ## 1、系統(tǒng)鏈碼執(zhí)行過(guò)程
    * 以peer channel join -b gensis.block命令為例。該命令結(jié)果是peer節(jié)點(diǎn)加入通道.
    這個(gè)命令會(huì)單獨(dú)啟一個(gè)進(jìn)程.在該進(jìn)程中會(huì)構(gòu)建一個(gè)名稱為cscc的鏈碼消息傳到peer節(jié)點(diǎn).
    通過(guò)grpc調(diào)用最終會(huì)進(jìn)到endorser.go中的ProcessProposal函數(shù)進(jìn)行處理。
    參考Fabric 1.1源代碼分析(2)http://m.tkk7.com/fool/archive/2018/06/12/433277.html
    系統(tǒng)鏈碼初始化過(guò)程,可以找到../shim/handler.go中
    的handleTransaction()函數(shù).最終會(huì)調(diào)用res := handler.cc.Invoke(stub).這里的
    cc就是importsysccs.go文件中systemChaincodes數(shù)組中的cscc系統(tǒng)鏈碼的.    
    Chaincode,其實(shí)例是&cscc.PeerConfiger{},實(shí)現(xiàn)在cscc/configure.go文件中。每個(gè)系統(tǒng)
    鏈碼都實(shí)現(xiàn)了這個(gè)Chaincode接口()
    ```go
    type Chaincode interface {
        // Init is called during Instantiate transaction after the chaincode container
        // has been established for the first time, allowing the chaincode to
        // initialize its internal data
        Init(stub ChaincodeStubInterface) pb.Response

        // Invoke is called to update or query the ledger in a proposal transaction.
        // Updated state variables are not committed to the ledger until the
        // transaction is committed.
        Invoke(stub ChaincodeStubInterface) pb.Response
    }
    ```

    * 至此就可以清晰地看到每一個(gè)系統(tǒng)鏈碼都會(huì)啟動(dòng)一對(duì)協(xié)程,通過(guò)chan通信。系統(tǒng)鏈碼消息由
    shim/handler.go中的函數(shù)處理.并且這里最終調(diào)用各自的具體實(shí)現(xiàn)的Ivoke方法進(jìn)行業(yè)務(wù)處理

    ## 2、peer channel join命令處理流程圖
    * peer channel join命令會(huì)調(diào)用configure.go中的Excute方法。對(duì)應(yīng)cscc系統(tǒng)鏈碼的處理,
    原因如下,以下流程圖大致可以了解cscc都做了些什么
    ![](cscc.png)

    ## 3、小結(jié)

    * 上面的流程圖也不是非常地強(qiáng)細(xì),忽略掉了一些方法。但是有了整個(gè)流程的理解,就能理解其
    它系統(tǒng)鏈碼的調(diào)用過(guò)程,需要時(shí)直接細(xì)讀其實(shí)現(xiàn)就好了。從上流程圖中可以看到文件末尾添加區(qū)
    區(qū)塊,leveldb中記錄了區(qū)塊號(hào),索引位置信息等等。另外因?yàn)橄到y(tǒng)鏈碼跟一般鏈碼雖然經(jīng)過(guò)
    的文件基本一樣,但最終處理方式還是不一樣,一個(gè)是協(xié)程,一個(gè)是grpc.可能參考Fabric 1.1
    源代碼分析之 Chaincode(鏈碼)初始化 http://m.tkk7.com/fool/archive/2018/06/12/433275.html

    posted on 2018-06-13 14:37 傻 瓜 閱讀(1267) 評(píng)論(0)  編輯  收藏 所屬分類: 雜項(xiàng)

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(7)

    我參與的團(tuán)隊(duì)

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 激情小说亚洲图片| 亚洲熟妇av一区| 精品国产亚洲一区二区在线观看| 免费A级毛片在线播放不收费| 亚洲国产精品无码久久久久久曰| 久久精品7亚洲午夜a| 亚洲精品视频在线看| 久久亚洲国产精品成人AV秋霞| 色在线亚洲视频www| 精品无码专区亚洲| 国产精品无码免费视频二三区| 久久久久亚洲av成人无码电影| 日亚毛片免费乱码不卡一区| 8x8×在线永久免费视频| 免费看少妇作爱视频| 亚洲精品无码不卡在线播放HE| 亚洲国产午夜电影在线入口| 中文在线日本免费永久18近| 青草草色A免费观看在线| 亚洲爽爽一区二区三区| 亚洲人成综合在线播放| 成在线人永久免费视频播放| 亚洲高清无在码在线电影不卡| 91精品视频免费| 久久国产亚洲电影天堂| 中文字幕免费在线看线人| 亚洲中文字幕无码不卡电影| 亚洲av无码无线在线观看| 18禁无遮挡无码国产免费网站| 在线观看亚洲精品福利片| 久久久99精品免费观看| 国产成人亚洲影院在线观看| 精品免费视在线观看| 亚洲精品国自产拍在线观看| 日本免费人成网ww555在线| 亚洲AV日韩AV永久无码绿巨人 | 亚洲成_人网站图片| 99re免费在线视频| 亚洲视频在线观看一区| 大地资源中文在线观看免费版| 免费a在线观看播放|