java隨記

          堅持就是勝利!

           

          開源區塊鏈Hyperleger Fabric通過SDK-JAVA動態添加通道


          在閱讀本篇之前需要理解
          configtxgen工具使用原理.基本上能跑通
          開源區塊鏈Hyperleger Fabric的SDK-JAVA新手上路指引

          中的內容??梢詤⒖糷ttp://www.aygfsteel.com/fool/archive/2018/02/01/433032.html.
          如果知道通過命令行工具進行智能合約的安裝測試就更好了。fabric中的channel可以理解為泳道。在這個泳道中可以布署
          多個智能合約。當然也可以安裝多個channel. 順便多一嘴,在智能合約可以調用另一個channel中的智能合約中的查詢方法.
          通過sdk動態安裝通道的步驟:
          1,通過configtxgen命令生成交易通道初始文件.
          configtxgen --profile TestSoft --outputCreateChannelTx testsoft.tx --channelID testsoft
          2,下載testsoft.tx到本機.
          3,sdk安裝通道代碼及解釋
          @Override
          public boolean installChannel(String channelName) throws IOException, InvalidArgumentException, TransactionException, ProposalException {
          // TODO Auto-generated method stub
           String configPath = this.config.getConfigPath();
                                   //初始化 ChannelConfiguration 對象.參數是通道初始化文件路徑
           ChannelConfiguration channelConfiguration = new ChannelConfiguration(new File(configPath + "/"+channelName + ".tx"));
            //構造orderder節點信息
             String ordererName = orderers.get().get(0).getOrdererName();
          Properties ordererProperties = loadOrderProperty(ordererName);
          Orderer anOrderer = client.newOrderer(
          ordererName,
          orderers.get().get(0).getOrdererLocation(), ordererProperties);
                 //Create channel that has only one signer that is this orgs peer admin. If channel creation policy needed more signature they would need to be added too.
                 Channel channel = client.newChannel(channelName, anOrderer, channelConfiguration, client.getChannelConfigurationSignature(channelConfiguration, fabricOrg.getPeerAdmin()));
                                 //構造peer節點信息,并且將peer節點加入到通道中。peer節點加入通道后,才能通過該peer節點中訪問通道中的智能合約
                 for (com.ygsoft.fabric.bean.Peers.Peer p : config.getInstallPeers().get()) {
          Properties peerProperties = this.loadPeerProperties(p.getPeerName());
          Peer peer = client.newPeer(p.getPeerName(),p.getPeerLocation(),peerProperties);
          channel.joinPeer(peer);
          }
          for (int i = 0; i < orderers.get().size(); i++) {
          Properties ordererProperties2 = loadOrderProperty(ordererName);
          channel.addOrderer(client.newOrderer(
          orderers.get().get(i).getOrdererName(),
          orderers.get().get(i)
          .getOrdererLocation(), ordererProperties2));
          }
          log.debug("channel.isInitialized() = " + channel.isInitialized());
            channel.initialize();
           return true;
          }

          知道了手工命令行安裝合約的過程,上面的理解還是比較簡單的。安裝通道后就可以調用sdk安裝合約了。











          posted on 2018-03-12 11:55 傻 瓜 閱讀(2815) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(7)

          我參與的團隊

          隨筆分類

          隨筆檔案

          文章分類

          友情鏈接

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 湘西| 马公市| 宁河县| 应城市| 北碚区| 鹿泉市| 吉木萨尔县| 淮安市| 芦溪县| 佛教| 望城县| 永兴县| 三穗县| 文昌市| 宜章县| 周宁县| 尉氏县| 巨野县| 广州市| 江永县| 建阳市| 广西| 甘孜县| 蒙山县| 南京市| 策勒县| 英山县| 前郭尔| 松江区| 平山县| 横峰县| 剑阁县| 泉州市| 牟定县| 永年县| 南宫市| 铜陵市| 晋江市| 宁德市| 吉安县| 双鸭山市|