通過fabricSDK(nodejs)創建/更新channel(通過文件)

版本:fabric 1.2

client.createChannel(request)

參數解析:

request 包含下列幾個參數:

name	     string	                 Required. 
orderer	     Orderer	             Required. 
envelope	 Array.<byte>	         Optional. 
config	     Array.<byte>	         Required.  官方文檔寫的是非必填,但實際上是必填。
signatures	 Array.<ConfigSignature> Required. 
txId	     TransactionID	         Required. 

name: 目標channel名  

order:目標orderer對象 

new Orderer(order_url,null);

envelope:通過configtx工具生成的.tx文件的byte[]。

config:配置,通過SDK解析上傳的envelope獲取

channelConfig = this._client.extractChannelConfig(envelope);

signature:簽名,獲取方式同上

signature = this._client.signChannelConfig(channelConfig);

txId::new一個即可

注意:

1、name必須與.tx文件內的channelid相同

2、通過閱讀源碼可知,默認取envelope中的signature和config,傳入envelope參數後這兩個參數雖爲必填,但未生效,即雙方二選一,若envelope中不包含簽名,則不傳入。

3、必須使用.tx文件內所指定的OrgMSP的管理員進行簽名,可多籤,更新時必須所有前成員管理員簽名。

示例:

this._client.setAdminSigningIdentity(private_key, certificate, "OrdererMSP");

createChannel = function (order_url,channelName,envelope) {
  let order = new Orderer(order_url,null);
  let channelConfig;
  let signature;
  try {
    channelConfig = this._client.extractChannelConfig(envelope);
    signature = this._client.signChannelConfig(channelConfig);
  } catch (err) {
    return Promise.reject(err);
  }
  let request={
    name:channelName,
    orderer:order,
    //envelope:envelope,
    config:channelConfig,
    signatures:[signature],
    txId:this._client.newTransactionID(true)
  };
  return this._client.createChannel(request);
};

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章