fabric智能合约简易开发实例

创建一个简易智能合约并部署

  1. 编写一个简易的智能合约
    使用goland创建一个chaincodePorject
    编写代码如下:
package main

import (
	"fmt"
	"github.com/hyperledger/fabric/core/chaincode/shim"
	pb "github.com/hyperledger/fabric/protos/peer"
)

//定义一个结构体,作为chaincode的主对象,可以是任何符合GO语言规范的命名方式
type simplechaincode struct {

}
/*
系统初始化方法,再部署chaincode的过程中当执行命令的时候会调用该方法,即实例化链码的时候调用该方法
*/
func (t*simplechaincode) Init(stub shim.ChaincodeStubInterface) pb.Response  {
	fmt.Println("<<<<==========success init it is view in docker======================>>>>")
	return shim.Success([]byte("success init"))
}

/*
主业务逻辑,在执行命令的时候系统会调用该方法并传入相关的参数,注意“invoke"之后,的参数是需要传入的参数
*/
func (t*simplechaincode) Invoke (stub shim.ChaincodeStubInterface) pb.Response  {
	fmt.Println("<<<<==================== 1.success it is view in docker ============>>>>")

	return shim.Success([]byte("success invoke"))
}
func main() {
	err := shim.Start(new(simplechaincode))
	if err != nil {
		fmt.Printf("Error starting simple chaincode: %s",err)
	}
}

**注意:**如果是在windows环境下开发,运行环境在linux环境下,需要将github.com/hyperledger/fabric复制到项目的src目录下
2. 部署

  • 将编写完成的chaincodeProject拷贝/opt/gopath/src/github.com/hyperledger/fabric/singlepeer/chaincoode/go目录下
  • 按照单机单节点的启动方式启动fabric
    注意:如果没有将编写完成的chaincode放在以上示例的目录下,需要在docker-compose-cli.yaml文件的cli配置下将chaincode所在的路径放在下图中框选的位置,在开启容器时将chaincode加载到docker容器中
    fabric智能合约简易开发实例_第1张图片
- "/opt/gopath/src/github.com/study/chaincodeProject:/opt/gopath/src/github.com/study/chaincodeProject"

这段配置,以冒号为界,前段是chaincode在本地的路径,后段是在docker容器中的位置
注:配置文件由代码自动生成,虽然有引号,但是不影响其功能

参考:

  • 博客园博主灵龙关于Fabric 1.4 单机单节点部署(solo)的实例:https://www.cnblogs.com/llongst/p/9571321.html
  • chaincode代码参考《区块链开发实战-Hyperledger Fabric关键技术与案例分析》第七章

你可能感兴趣的:(hyperledger,fabric,chaincode,go)