手写查询和交易go链码
myfirstcc.go
链码代码myfirstcc.go,并上传至chaincode/go中
package main
import (
"github.com/hyperledger/fabric/core/chaincode/shim"
pb "github.com/hyperledger/fabric/protos/peer"
"strconv"
"fmt"
)
type MyFirstCc struct {
}
/*
传两个字段name,age,以及对应的值
e.g.: name:hallen,age:18
*/
// 存储初始化后的值
var map_data map[string]interface{} = make(map[string]interface{})
func (m *MyFirstCc)Init(stub shim.ChaincodeStubInterface) pb.Response {
_,args := stub.GetFunctionAndParameters()
// 判断参数长度
if len(args) != 4 {
return shim.Error("除了函数参数,其他参数长度必须为4个长度")
}
key1 := args[0]
key1_value := args[1]
key2 := args[2]
key2_value := args[3]
key2_value_new,err := strconv.Atoi(key2_value)
if err != nil {
return shim.Error("第四个参数必须是整形")
}
fmt.Printf("{%s:%s,%s:%d}\n",key1,key1_value,key2,key2_value_new)
//fmt.Printf("hello %s,您的年龄是:%d\n",key1_value,key2_value_new)
//k1 = key1
//k1_value = key1_value
//k2 = key2
//k2_value = key2_value_new
map_data[key1] = key1_value
map_data[key2] = key2_value_new
ret := fmt.Sprintf("初始化成功,值为:%v",map_data)
return shim.Success([]byte(ret))
}
func (m *MyFirstCc)query(stub shim.ChaincodeStubInterface,args []string)pb.Response {
if len(args) != 1 {
return shim.Error("除了函数参数,其他参数长度必须为1个长度")
}
k := args[0]
k_value := map_data[k]
fmt.Printf("%s 的值是:%v",k,k_value)
ret := fmt.Sprintf("查询成功,%s 的值是:%v",k,k_value)