2017-08-25 1 views
0

私はprevious postからローカルで実行することを提案したHyperReader Fabric V1.0ネットワーク(Javaアプリケーションから)しかし、私は以下の例外を受け取り、それがなぜ起こっているのか分からない。Hyperledher Fabric V1.0のローカル開発環境でファブリッククライアントjava sdkを使用している間に発生する問題

public class Test { 

    final HFClient client = HFClient.createNewInstance(); 
    Channel channel; 
    TransactionProposalRequest proposalRequest; 

    void setupCryptoMaterialsForClient() throws CryptoException, InvalidArgumentException{ 
     // Set default crypto suite for HF client 

     client.setCryptoSuite(CryptoSuite.Factory.getCryptoSuite()); 

     client.setUserContext(new User() { 

      public String getName() { 
       return "PeerAdmin"; 
      } 

      public Set<String> getRoles() { 
       return null; 
      } 

      public String getAccount() { 
       return null; 
      } 

      public String getAffiliation() { 
       return null; 
      } 

      public Enrollment getEnrollment() { 
       return new Enrollment() { 
        public PrivateKey getKey() { 
         PrivateKey privateKey = null; 
         try { 
          File privateKeyFile = findFileSk("C:/Users/Public/HyperledgerFabricV1/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore"); 
          privateKey = getPrivateKeyFromBytes(IOUtils.toByteArray(new FileInputStream(privateKeyFile))); 
         } catch (InvalidKeySpecException e) { 
          e.printStackTrace(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } catch (NoSuchProviderException e) { 
          e.printStackTrace(); 
         } catch (NoSuchAlgorithmException e) { 
          e.printStackTrace(); 
         } 
         return privateKey; 
        } 

        public String getCert() { 

         String certificate = null; 
         try { 
          File certificateFile = new File("C:/Users/Public/HyperledgerFabricV1/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected]"); 
          certificate = new String(IOUtils.toByteArray(new FileInputStream(certificateFile)), "UTF-8"); 
         } catch (UnsupportedEncodingException e) { 
          e.printStackTrace(); 
         } catch (FileNotFoundException e) { 
          e.printStackTrace(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
         return certificate; 
        } 
       }; 
      } 

      public String getMspId() { 
       return "Org1MSP"; 
      } 
     }); 
    } 

    static File findFileSk(String directorys) { 

     File directory = new File(directorys); 

     File[] matches = directory.listFiles((dir, name) -> name.endsWith("_sk")); 

     if (null == matches) { 
      throw new RuntimeException(format("Matches returned null does %s directory exist?", directory.getAbsoluteFile().getName())); 
     } 

     if (matches.length != 1) { 
      throw new RuntimeException(format("Expected in %s only 1 sk file but found %d", directory.getAbsoluteFile().getName(), matches.length)); 
     } 

     return matches[0]; 
    } 

    static PrivateKey getPrivateKeyFromBytes(byte[] data) throws IOException, NoSuchProviderException, NoSuchAlgorithmException, InvalidKeySpecException { 
     final Reader pemReader = new StringReader(new String(data)); 

     final PrivateKeyInfo pemPair; 
     try (PEMParser pemParser = new PEMParser(pemReader)) { 
      pemPair = (PrivateKeyInfo) pemParser.readObject(); 
     } 

     PrivateKey privateKey = new JcaPEMKeyConverter().setProvider(BouncyCastleProvider.PROVIDER_NAME).getPrivateKey(pemPair); 

     return privateKey; 
    } 


void createChannel() throws InvalidArgumentException, TransactionException{ 
    channel = client.newChannel("mychannel"); 
    Properties ordererProperties = new Properties(); 
    ordererProperties.setProperty("pemFile", "C:/Users/Public/HyperledgerFabricV1/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt"); 
    ordererProperties.setProperty("trustServerCertificate", "true"); //testing environment only NOT FOR PRODUCTION! 
    ordererProperties.setProperty("hostnameOverride", "orderer.example.com"); 
    ordererProperties.setProperty("sslProvider", "openSSL"); 
    ordererProperties.setProperty("negotiationType", "TLS"); 
    ordererProperties.put("grpc.NettyChannelBuilderOption.keepAliveTime", new Object[] {5L, TimeUnit.MINUTES}); 
    ordererProperties.put("grpc.NettyChannelBuilderOption.keepAliveTimeout", new Object[] {8L, TimeUnit.SECONDS}); 
    channel.addOrderer(client.newOrderer("orderer.example.com", "grpc://192.168.99.100:7050",ordererProperties)); 

    Properties peerProperties = new Properties(); 
    peerProperties.setProperty("pemFile", "C:/Users/Public/HyperledgerFabricV1/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt"); 
    peerProperties.setProperty("trustServerCertificate", "true"); //testing environment only NOT FOR PRODUCTION!  
    peerProperties.setProperty("hostnameOverride", "peer0.org1.example.com"); 
    peerProperties.setProperty("sslProvider", "openSSL"); 
    peerProperties.setProperty("negotiationType", "TLS"); 
    peerProperties.put("grpc.NettyChannelBuilderOption.maxInboundMessageSize", 9000000); 
    channel.addPeer(client.newPeer("peer0.org1.example.com", "grpc://192.168.99.100:7051",peerProperties)); 
    channel.initialize(); 
} 

    void creteTransactionalProposal(){ 
     proposalRequest = client.newTransactionProposalRequest(); 

     final ChaincodeID chaincodeID = ChaincodeID.newBuilder() 
       .setName("asset") 
       .setVersion("1.0") 
       .setPath("github.com/mygitId/myFabricRepo/assetChainCode") 
       .build(); 

     proposalRequest.setChaincodeID(chaincodeID); 
     proposalRequest.setFcn("createAsset"); 
     //proposalRequest.setFcn("init"); 
     proposalRequest.setProposalWaitTime(TimeUnit.SECONDS.toMillis(10)); 
     proposalRequest.setArgs(new String[]{"ORG1", "{\"assetKey\":\"a1\",\"assetName\":\"aname1\",\"assetType\":\"atype1\",\"slNo\":\"slno1\",\"orderDate\":\"19-05-2017\"}"}); 
    } 

    void sendProposal() throws ProposalException, InvalidArgumentException, InterruptedException, ExecutionException{ 
     final Collection<ProposalResponse> responses = channel.sendTransactionProposal(proposalRequest); 
     CompletableFuture<BlockEvent.TransactionEvent> txFuture = channel.sendTransaction(responses, client.getUserContext()); 
     BlockEvent.TransactionEvent event = txFuture.get(); 
     System.out.println(event.toString()); 
    } 

    public static void main(String args[]) throws Exception { 
     Test t = new Test(); 
     t.setupCryptoMaterialsForClient(); 
     t.createChannel(); 
     t.creteTransactionalProposal(); 
     t.sendProposal(); 
    } 
} 

そして、これが私のdocker ps enter image description here

そして、次の例外を取得日食Javaプロジェクトでコードを実行することです。

Exception in thread "main" org.hyperledger.fabric.sdk.exception.TransactionException: INTERNAL 
    at org.hyperledger.fabric.sdk.OrdererClient.sendDeliver(OrdererClient.java:286) 
    at org.hyperledger.fabric.sdk.Orderer.sendDeliver(Orderer.java:165) 
    at org.hyperledger.fabric.sdk.Channel.getLatestBlock(Channel.java:1074) 
    at org.hyperledger.fabric.sdk.Channel.getConfigurationBlock(Channel.java:898) 
    at org.hyperledger.fabric.sdk.Channel.parseConfigBlock(Channel.java:826) 
    at org.hyperledger.fabric.sdk.Channel.initialize(Channel.java:526) 
    at com.ibs.blockchain.client.test.Test.createChannel(Test.java:151) 
    at com.ibs.blockchain.client.test.Test.main(Test.java:179) 
Caused by: io.grpc.StatusRuntimeException: INTERNAL 
    at io.grpc.Status.asRuntimeException(Status.java:540) 
    at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:392) 
    at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:426) 
    at io.grpc.internal.ClientCallImpl.access$100(ClientCallImpl.java:76) 
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:512) 
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$700(ClientCallImpl.java:429) 
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:544) 
    at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52) 
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:117) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: io.netty.handler.codec.http2.Http2Exception: First received frame was not SETTINGS. Hex dump for first 5 bytes: 1503010002 
    at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:85) 
    at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.verifyFirstFrameIsSettings(Http2ConnectionHandler.java:309) 
    at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:217) 
    at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:401) 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341) 
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:642) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:565) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:479) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:441) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) 
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) 
    ... 1 more 

誰かが私が間違っている箇所を見つけるのに役立つコードを見てください。私は手順を以下Building Your First Networkと日食を通じて、私のJavaアプリケーションを実行することによってDocker ToolboxのWindows 7を使用しています :与えられた

IP 192.168.99.100は、仮想マシンのIP

注意です。

更新:
fabric-sdk-javaソースを参照して@Gariシンの答えに従ってTLSを追加することで機能createChannelを更新しました。しかし今でも同じエラー。 更新:
このドッキングウィンドウクイックスタート端末コンソールJavaクライアントを実行した後、あなたはまず、ネットワークサンプルを使用した場合、それはTLSが有効になっております上記のコードでいる何のログは enter image description here

+0

あなたはOrdererのログを送信できますか?ピアにログがありますか?それらのすべてを表示できますか? – Urko

+0

ドッカー端末が付いていますが、ログが表示されません – Girish007

答えて

1

どのように暗号素材を作成しましたか?私はあなたが使用したツールについて質問していない、私の質問は、証明書のために定義した共通名に関連しています。証明書のCNは、接続先のホストと同じである必要があります。

私があなたの場合は、cryptogenツールを使用して暗号素材を作成します。その後、私は呼び出しのURLを変更します。私はあなたがlocalhostにいることを理解しているので、192.168.99.100の代わりにorderer.example.comを呼び出せますか?

一方、createchannelを実行する必要はありません。前もって作成しているからです。

2

を来ていないようですTLSを使用していません。だから、私の最高の推測は、エラーがあなたのクライアントでTLSを使用しないことによって引き起こされるということです。

+0

応答してくれてありがとうございます。私はこれについて深い知識を持っていないので、ちょっとしたヒントを教えてください。 – Girish007

+0

最初のネットワークサンプルを使用していますか? –

+0

はい、私はfirst-networkを使っていて、 './ 'を使って作ります。 byfn.sh -m up' – Girish007

関連する問題