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);
}
}