div#pop_ad { opacity: 0; }
Chaincode是一段由Go语言编写(支持其他编程语言,如Java),并能实现预定义接口的程序。Chaincode运行在一个受保护的docker容器当中,与背书节点的运行互相隔离。Chaincode可通过应用提交的交易对账本状态初始化并进行管理。
Chaincode API
每个Chaincode程序都必须实现Chaincode接口,该接口的方法是为响应接收的事务而调用的。特别地,Init当链代码接收instantiate或upgrade交易时调用该方法,使得链代码可以执行任何必要的初始化,包括应用程序状态的初始化。Invoke响应于接收invoke处理交易提议的交易而调用该方法。
每个链码程序都必须实现Chiancode接口,接口中的方法会在响应传来的交易时被调用。特别地,Init(初始化)方法会在Chaincode接收到instantiate(实例化)或者upgrade(升级)交易时被调用,进而使得Chaincode顺利执行必要的初始化操作,包括初始化应用的状态; Invoke(调用)方法会在响应invoke(调用)交易时被调用以执行交易。
链码“shim”API中的另一个接口是ChaincodeStubInterface,用于访问和修改分类帐,以及在链代码之间进行调用。
其他chaincode shim APIs中的接口被称为Chaincode存根接口,用于访问及修改账本,并实现Chaincode之间的互相调用。
在本教程中,我们将通过实现管理简单“资产”的简单链代码应用程序来演示这些API的使用。
在本篇指南中,我们会通过实现一个能管理简单“资产”的Chaincode应用范例来演示这些接口的使用方法。

public class MyCc extends ChaincodeBaseX {
privatestatic Logger logger = LoggerFactory.getLogger(MyCc.class);
@Override
publicResponse init(ChaincodeStub stub) {
returnnewSuccessResponse();
}
@Override
publicResponse invoke(ChaincodeStub stub) {
logger.info("invoke..........................");
Stringpayload = "";
try{
finalString function = stub.getFunction();
finalList params = stub.getParameters();
System.out.println("invokemethod receive function :" + function);
System.out.println("invokemethod receive params :" + params);
switch(function) {
case"getHis":
QueryResultsIteratorhistoryForKey = stub.getHistoryForKey(params.get(0));
historyForKey.forEach(e-> {
logger.info("tid: {} /key : {} /value : {} /isDelete : {}", e.getTxId(), params.get(0),e.getStringValue(), e.isDeleted());
});
historyForKey.close();
break;
case"get":
Stringstate = stub.getStringState(params.get(0));
logger.info("get key :{} result : {}", params.get(0), state);
payload= state;
break;
case"put":
stub.putStringState(params.get(0),params.get(1));
logger.info("putkey : {} value : {}", params.get(0), params.get(1));
break;
}
}catch (Exception e) {
e.printStackTrace();
returnnewErrorResponse(e);
}
returnnewSuccessResponse(payload.getBytes());
}
publicstatic void main(String[] args) throws Exception {
// args= new String[]{"-a", "127.0.0.1:9052", "-i","mycc:v1.0", "-c", "739"};
Arrays.stream(args).forEach(System.out::println);
MyCcmyCc = new MyCc();
myCc.start(args);
}
}


添加新手交流群:币种分析、每日早晚盘分析
添加助理微信,一对一亲自指导:YoYo8abc