Fabric智能合约(base)

Posted jockming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    }

}

以上是关于Fabric智能合约(base)的主要内容,如果未能解决你的问题,请参考以下文章

hyperledger fabric 智能合约开发

区块链:Hyperledger Fabric智能合约(链码)

区块链:Hyperledger Fabric智能合约(链码)

智能合约重构社会契约Fabric

Hyperledger Fabric教程--部署Fabric智能合约

如果Fabric的智能合约函数陷入死循环会怎么样