作为应用级别来说,在fabric-sdk-java中,最常用的是query、invoke方法
public Map<String, Object> query(String peerName,String chaincodeName,String fcn,String[] args) throws Exception {
JustProperty conf = handle.getConf();
ChaincodeInfo chaincodeInfo = conf.getChaincodeInfo();
String channelName = chaincodeInfo.getChaincodeChannelName();
String ordererName = chaincodeInfo.getChaincodeOrdererName();
return handle.query(channelName,ordererName, peerName, chaincodeName, fcn, args);
}
读取配置文件里的参数存放在 JustProperty
JustProperty conf = handle.getConf();
下面我们来看一下query具体实现
public Map<String,Object> query(String channelName,String ordererName,String peerName,String chaincodename, String chaincodeFunction, String[] chaincodeArgs) throws Exception {
Map<String,Object> callback = new HashMap<>();
try{
Channel channel = reconstructChannel(channelName,ordererName,peerName);
client.setCryptoSuite(CryptoSuite.Factory.getCryptoSuite());
client.setUserContext(conf.enrollUser(ordererName));
ChaincodeID chaincodeID = ChaincodeID.newBuilder().setName(chaincodename).build();
logger.info("Channel Name is " + channel.getName());
logger.debug(format("Querying chaincode %s and function %s with arguments %s", chaincodename,
chaincodeFunction, Arrays.asList(chaincodeArgs).toString()));
QueryByChaincodeRequest queryByChaincodeRequest = client.newQueryProposalRequest();
queryByChaincodeRequest.setArgs(chaincodeArgs);
queryByChaincodeRequest.setFcn(chaincodeFunct