调用链码时,有-c选项用于传递参数。据我了解(另请参阅Hyperledger fabric: Error: chaincode argument error: json: cannot unmarshal array into Go struct field strArgs.Args of type string),这些参数需要作为字符串数组传递。 例如:
-c '{"Args":["add", "peter", "6"]}'
有一个GetArgs()
函数(https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.GetArgs),它以字节数组的形式返回参数。
在上述情况下,这意味着第三个参数(“ 6”)作为长度为1的字节数组返回,其中第一个条目为54。
但是我想在长度为1的字节数组中以第6个条目(00000110)表示第三个参数(“ 6”)。
完全不可能将字节/数字类型作为参数传递吗?
答案 0 :(得分:1)
您需要做的是将第三个参数作为json传递,并将其从链码中的字符串取消编组。
'{"Args": ["add", "peter", "[6]"]}'
然后类似
var arr []byte
err := json.Unmarshal(args[2], &arr) // args[2] is the third argument from the list
fmt.Println(arr)