Hyperledger Fabric 1.0 实战学习(三) chaincode go语言编写

   在Fabric的环境搭建后,就可以进行Fabric的开发工作。Fabric的开发主要分成两块,chaincode开发和基于SDK客户端应用开发。本章先讲chaincode的开发。Fabric的链上代码支持Java或者Go语言进行开发,因为Fabric本身是Go开发的,所以建议还是用Go进行chaincode。
chaincode结构如下:
// SimpleChaincode example simple Chaincode implementation
type SimpleChaincode struct {
}

func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
               return shim.Success(nil)
}

func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
        return shim.Error("Invalid 03 invoke function name. Expecting \"put\" \"query\"")
}

init方法:chaincode实例化(peer chaincode instantiate)的时候执行,进行一些初始化操作。
invoke方法:客户端调用的时候执行,可以根据参数的不同,进行不用的业务处理。参数的获取可以根据shim.ChaincodeStubInterface的方法。
1.ChaincodeStubInterface获取参数的方法:
GetFunctionAndParameters() (string, []string) 接收调用chaincode的客户端传递过来的参数,根据参数的不用进行不同的业务处理。

function, args := stub.GetFunctionAndParameters() //第一个是方法名,根据方法名来调用不同业务处理;后面的客户端的参数

2.ChaincodeStubInterface存储数据的方法:
PutState(key string, value []byte):客户端传来的数据存储Fabric上
GetState(key string):获取存储在Fabric上面的数据
DelState(key string):根据Key删除State DB的数据
GetStateByRange(startKey, endKey string):对某个区间的Key进行查询的接口
GetHistoryForKey(key string):获得这个对象在区块链中记录的更改历史,包括是在哪个交易,修改的数据,修改的时间戳等
CreateCompositeKey:负责创建一个组合键
GetStateByPartialCompositeKey:查询复合键的值
GetTxID:获取交易编号
GetTxTimestamp:获取交易的时间
GetCreator:获取交易创建者
InvokeChaincode:调用其他的chaincode,参数为链码名称,参数,channel名称
3.部署chaincode与测试
在chaincode写好之后,就可以往fabric上面部署。
docker exec -it cli bash
peer chaincode install :安装chaincode
peer chaincode instantiate:对chaincode进行实例化,chaincode会进行初始化(Init方法)
peer chaincode invoke:调用chaincode,会执行chaincode中的invoke方法。
peer chaincode query:进行chaincode的结果的查询。

目前博客更新可能有点慢,欢迎大家邮件进行技术交流。邮件:[email protected]






你可能感兴趣的:(区块链Hyperledger,fabric)