本文是在阅读《区块链开发实战-Hyperledger Fabric关键技术与案例分析》一书的同时,在实践中记录的一些实践步骤与经验分享。
在上一节Hyperledger Fabric开发实战-03智能合约中,演示了一个简单的Chaincode示例,可以看到,Chaincode中主要是Init和Invoke方法的实现。两个方法的原型如下:
func (t *mychaincode) Init(stub shim.ChaincodeStubInterface) pb.Response{
}
func (t *mychaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response{
}
可以看到,主要是对shim.ChaincodeStubInterface的使用。
shim接口
shim.ChaincodeStubInterface
// 获取传入的参数,args是一个数组
function,args = stub.GetFunctionAndParameters()
// 将数据保存到fabric中
PutState(key string, value []byte) error
// 将数据保存到fabric中
GetState(key string) ([]byte,error)
// 获取区间内的key
GetStateByRange(startKey,endKey string) (StateQueryInterface,error)
// 获取key的历史
GetHistoryForKey(key string) (HistoryQueryIteratorInterface,error)</