Fabric智能合约(base)
这里的智能合约仅包含Init函数和Invoke函数。
为什么一定是这两个方法?
因为在源码中的智能合约模块有这样的接口,如果要完成智能合约的相关编程,就需要实现源码中定义的接口,接口中定义了这两个方法。空口无凭,下面我给大家看一个图:
文件路径:github.com/hyperledger/fabric/core/chaincode/shim
这个文件中的内容如下:
go语言
package main import ( "github.com/hyperledger/fabric/core/chaincode/shim" pb "github.com/hyperledger/fabric/protos/peer" ) var logger = shim.NewLogger("example_cc0") // SimpleChaincode example simple Chaincode implementation type SimpleChaincode struct { } // Init initializes the chaincode state func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { } // Invoke makes payment of X units from A to B func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { } func main() { err := shim.Start(new(SimpleChaincode)) if err != nil { logger.Errorf("Error starting Simple chaincode: %s", err) } }
java语言
package org.hyperledger.fabric.example; import io.netty.handler.ssl.OpenSsl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hyperledger.fabric.shim.ChaincodeBase; import org.hyperledger.fabric.shim.ChaincodeStub; public class SimpleChaincode extends ChaincodeBase { private static Log logger = LogFactory.getLog(SimpleChaincode.class); @Override public Response init(ChaincodeStub stub) { } @Override public Response invoke(ChaincodeStub stub) { } public static void main(String[] args) { logger.info("OpenSSL avaliable: " + OpenSsl.isAvailable()); new SimpleChaincode().start(args); } }