一、准备
1、在项目中引入maven依赖
<!-- https://mvnrepository.com/artifact/org.hyperledger.fabric-sdk-java/fabric-sdk-java -->
<dependency>
<groupId>org.hyperledger.fabric-sdk-java</groupId>
<artifactId>fabric-sdk-java</artifactId>
<version>1.3.0</version>
</dependency>
2、编写测试代码(包含Fabcar.java、CertUtils.java两个类)
Fabcar.java
import org.hyperledger.fabric.sdk.ChaincodeID;
import org.hyperledger.fabric.sdk.Channel;
import org.hyperledger.fabric.sdk.Enrollment;
import org.hyperledger.fabric.sdk.HFClient;
import org.hyperledger.fabric.sdk.ProposalResponse;
import org.hyperledger.fabric.sdk.QueryByChaincodeRequest;
import org.hyperledger.fabric.sdk.TransactionProposalRequest;
import org.hyperledger.fabric.sdk.User;
import org.hyperledger.fabric.sdk.security.CryptoSuite;
import org.hyperledger.fabric_ca.sdk.HFCAClient;
import java.util.Collection;
import java.util.Collections;
import java.util.Properties;
import java.util.Set;
public class Fabcar{
public static void main(String[] args) throws Exception {
enroll("admin", "adminpw", "cert");
queryCar();
updateCar();
Thread.sleep(5000);
queryCar();
}
/**
* 更新账本
* @throws Exception
*/
private static void updateCar() throws Exception {
HFClient client = HFClient.createNewInstance();
Channel channel = initChannel(client);
// 构建proposal
TransactionProposalRequest req = client.newTransactionProposalRequest();
// 指定要调用的chaincode
ChaincodeID cid = ChaincodeID.newBuilder().setName("fabcar").build();
req.setChaincodeID(cid);
req.setFcn("changeCarOwner");
req.setArgs(new String[]{"CAR1", "Marry"});
System.out.println("Executing for " + "CAR1");
// 发送proprosal
Collection<ProposalResponse> resps = channel.sendTransactionProposal(req);
// 提交给orderer节点
channel.sendTransaction(resps);
}
/**
* 查询账本
* @throws Exception
*/
private static void queryCar() throws Exception {
HFClient client = HFClient.createNewInstance();
Channel channel = initChannel(client);
String key = "CAR1";
// 构建proposal
QueryByChaincodeRequest req = client.newQueryProposalRequest();
// 指定要调用的chaincode
ChaincodeID cid = ChaincodeID.newBuilder().setName("fabcar").build();
req.setChaincodeID(cid);
req.setFcn("queryCar");
req.setArgs(new String[] { key });
System.out.println("Querying for " + key);