【乾貨乾貨】configtxlator 工具介紹

慕斯~long發表於2019-07-23

這一章我們對configtxlator做一個解說。

 

1, configtxlator 他是什麼,有什麼用?

   configtxlator 官方說明是用於生成Hyperledger結構通道配置的實用程式;

   此工具提供:編碼(proto_encode)、解碼(proto_decode)、對比修改結構(compute_update)以及版本資訊(version)

  

2, 如何使用configtxlator工具

   從工具的原始碼定義上,我這裡將它有分為了兩種用法,:

    (a), 工具非服務化

      

       在cli中動態增加組織的時候,我們configtxlator proto_encode或 configtxlator  proto_decode  這種方式。

       proto_encode和proto_decode兩個命令所擁有的引數是一樣的,都需要以下幾個引數設定:

              type : 訊息結構體型別

              input : 輸入引數,encode(值是json格式),decode(值是proto格式的位元組陣列)

              output:輸出結果;根據輸入,輸出的是json或者proto格式。

 

              type包含以下幾種:

common.Block

區塊結構

common.Envelope

帶有效載荷和數字簽名的數字信封,區塊的資料部分就是序列化後的數字信封

common.ConfigEnvelope

包含鏈配置的數字信封,內容包含ConfigUpdateEnvelope

common.ConfigUpdateEnvelope

提交給排序節點的配置數字信封

common.Config

ConfigEnvelope的配置部分

common.ConfigUpdate

ConfigUpdateEnvelope的一部分

 

 

        compute_update計算修改量,命令擁有以下幾個引數

                original :原始的proto

                updated:修改後的proto

                channel_id:通道id

                output:對比計算後的目標修改配置proto

 

         舉例:將當前channel的塊訊息中的配置decode為json檔案

          configtxlator proto_decode --input mychannel.pb --type common.Block | jq .data.data[0].payload.data.config > mychannel.json

         Json內容:

         

 

 

       (b), 工具服務化

      

     可以執行一下命令,啟動此工具的rest服務:

     ./configtxlator start --hostname="0.0.0.0" --port=7059

     Hostname : 主機ip,預設當前機器ip

     Port:服務埠,預設7059

     服務啟動,通過路由提供一下幾種服務:

    

     MsgName對應的就是非服務化中的type。

    

     舉例:java中的使用樣例

    

 

      如果想檢視計算後獲取目標修改配置的資訊,可以使用common.Envelope,進行解碼檢視json資料。

      具體給個方法是如何實現的,邏輯不復雜,就不做詳細描述了。

相關文章