我使用centos7安装hyperledger-fabric2.5.6,安装官网上的安装的是链码是chaincode-java,使用
<dependency>
<groupId>org.hyperledger.fabric</groupId>
<artifactId>fabric-gateway</artifactId>
<version>1.4.0</version>
</dependency>
来调用hyperledger
我的代码是:
Reader certReader = Files.newBufferedReader(Paths.get("src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/cert.pem"));
X509Certificate certificate = Identities.readX509Certificate(certReader);
Identity identity = new X509Identity("Org1MSP", certificate);
Reader keyReader = Files.newBufferedReader(Paths.get("src\\main\\resources\\crypto-config\\peerOrganizations\\org1.example.com\\users\\User1@org1.example.com\\msp\\keystore\\0cc19466192b35304c4f5f44de099d0649afd88b83e0c75c51434373af53b3a0_sk"));
PrivateKey privateKey = Identities.readPrivateKey(keyReader);
Signer signer = Signers.newPrivateKeySigner(privateKey);
ManagedChannel grpcChannel = Grpc.newChannelBuilder("192.168.10.128:7051", TlsChannelCredentials.newBuilder()
.trustManager(TLS_CERT_PATH.toFile()).build())
.overrideAuthority(OVERRIDE_AUTH)
.build();
Gateway.Builder builder = Gateway.newInstance()
.identity(identity)
.signer(signer)
.connection(grpcChannel);
try (Gateway gateway = builder.connect()) {
Network network = gateway.getNetwork("mychannel");
Contract contract = network.getContract("basic");
byte[] putResult = contract.submitTransaction("put","time", LocalDateTime.now().toString());
System.out.println(new String(putResult, StandardCharsets.UTF_8));
byte[] getResult = contract.evaluateTransaction("get");
System.out.println(new String(getResult, StandardCharsets.UTF_8));
} finally {
grpcChannel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS);
}
运行后contract.submitTransaction("put","time", LocalDateTime.now().toString());报错内容如下:
org.hyperledger.fabric.client.EndorseException: io.grpc.StatusRuntimeException: ABORTED: failed to endorse transaction, see attached details for more info
at org.hyperledger.fabric.client.GatewayClient.endorse(GatewayClient.java:73)
at org.hyperledger.fabric.client.ProposalImpl.endorse(ProposalImpl.java:74)
at org.hyperledger.fabric.client.Proposal.endorse(Proposal.java:65)
at org.hyperledger.fabric.client.ContractImpl.submitTransaction(ContractImpl.java:47)
at com.donation.system.Test21.test1(Test21.java:45)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: io.grpc.StatusRuntimeException: ABORTED: failed to endorse transaction, see attached details for more info
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:268)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:249)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:167)
at org.hyperledger.fabric.protos.gateway.GatewayGrpc$GatewayBlockingStub.endorse(GatewayGrpc.java:455)
at org.hyperledger.fabric.client.GatewayClient.endorse(GatewayClient.java:71)
... 7 more
Error details:
address: peer0.org1.example.com:7051; mspId: Org1MSP; message: error validating proposal: access denied: channel [mychannel] creator org unknown, creator is malformed
请问这个应该怎么解决?