版本: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);
};