Hyperledger Fabric学习(七)智能合约(链码)
智能合约(链码) 1、概述 链码的编写需要自定义struct,实现shim包Chaincode接口的两个方法: type Chaincode interface { Init ( stub ChaincodeStubInterface ) pb . Response Invoke ( stub ChaincodeStubInterface ) pb . Response } 链码的生命周期包括链码安装、实例化、升级等。其中链码的实例化和升级都会调用Init()方法,链码的invoke、query调用方式都只会调用Invoke()方法。 在shim包中,fabric给我们提供了ChaincodeStubInterface接口,在该接口中,我们可以使用接口中的方法实现具体的链码业务。 特别说明一句,如果链码方法最后返回的pb.Response是shim.Error(),那么所有的操作,包括数据插入、数据删除、创建复合键、发送事件、调用其他链码等都是无效的,即一次链码的调用具有事务性,如果返回shim.Success()则所有操作都成功,否则所有操作都失败。 2、接口描述 1)参数解析 直接获取所有参数 字节数组[]byte形式 /* args := stub.GetArgs() - args 所有参数的[]byte形式 */ GetArgs ( ) [ ] [ ] byte