1.链码结构总述
这里,链码的开发用的是Go语言,为此需要先简单学习一下Go语言,这是一门轻量级的语言,有意思的是它自带通道,可以并发,就很适合大型分布式系统的开发。
启动链码必须调用shim包中的Start函数,这个函数的参数是一个Chaincode接口类型,Chaincode这个接口类型中有两个方法分别是Init和Invoke,这是链码开发中极为重要的两个方法:
- Init:在链码实例化或者升级的时候被调用,完成数据初始化;
- Invoke:在更新或查询提案事务中分类帐本数据状态的时候被调用。
在实际开发中,需要定义一个结构体,重写Init和Invoke两个方法完成相关功能。下面具体看看一个链码必要的结构:
package main //所写的包的名称
import (
"fmt"
"github.com/hyperledger/fabric/core/chaincode/shim"
"github.com/hyperledger/fabric/protos/peer"
)//引入必要的包
type HelloChaincode struct{
}//定义一个结构体
func main() {
err := shim.Start(new(HelloChaincode))
if err != nil {
fmt.Printf("链码启动失败: %v", err)
}
}//主函数,调用shim.Start方发启动链码
func (t *HelloChaincode) Init(stub shim.ChaincodeStubInterface) peer.Response{
}
func (t *HelloChaincode) Invoke(stub shim.ChaincodeStubInterface) peer.Response{
fun, args := stub.