创建一个简易智能合约并部署
- 编写一个简易的智能合约
使用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容器中
- "/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关键技术与案例分析》第七章