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 傻 瓜 閱讀(2814) 評論(0)  編輯  收藏


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(7)

          我參與的團隊

          隨筆分類

          隨筆檔案

          文章分類

          友情鏈接

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 米易县| 友谊县| 镇康县| 彰化县| 黔东| 通化市| 米脂县| 抚远县| 青海省| 郯城县| 石屏县| 双柏县| 基隆市| 重庆市| 扶风县| 深水埗区| 青龙| 综艺| 中宁县| 吉隆县| 得荣县| 周口市| 准格尔旗| 正蓝旗| 香格里拉县| 台北市| 武汉市| 孙吴县| 从江县| 汤阴县| 乾安县| 蒲城县| 建瓯市| 格尔木市| 深圳市| 涞水县| 乐业县| 榆中县| 裕民县| 安西县| 长子县|