使用IBM VS Code区块链扩展调用Hyperledger Fabric链码CreateAsset报错求助
Hyperledger Fabric私有数据链码调用报错解决方案
报错核心原因
你收到的failed to unmarshal JSON: invalid character '\x00' looking for beginning of value报错,是链码在解析传入的Transient Data时,字节流中混入了不可见的UTF-8空控制字符\x00,同时你的Transient Data结构和Golang版本链码期望的结构不匹配,双重问题导致反序列化失败。
修复步骤
- 第一步:修正Transient Data结构
asset-transfer-private-data示例的Go版本CreateAsset函数,期望asset_properties对应的值是单个JSON对象,而非你当前传入的数组结构,修改后的参数如下:
{ "asset_properties":{ "objectType":"asset", "assetID":"asset1", "color":"green", "size":20, "appraisedValue":100 } }
- 第二步:清除参数中的隐藏控制字符
IBM Blockchain 2.0.3扩展的参数输入框存在已知问题,粘贴内容时可能自动带入不可见的空字符。你可以先把修正后的JSON参数复制到系统自带的纯文本编辑器中,全选后剪切再重新粘贴回扩展的Transient参数输入框,彻底清除隐藏控制字符。 - 第三步:验证私有数据集合配置
确认你部署链码时绑定的私有数据集合配置文件和官方示例一致,Org1和Org2都持有对应私有集合的读写权限,避免权限问题导致参数读取异常。 - 第四步:扩展bug排除
如果以上操作后仍报错,基本可以确定是IBM Blockchain扩展的调用逻辑bug,你可以直接使用peer CLI命令调用链码验证,跳过扩展的参数处理环节。
内容的提问来源于stack exchange,提问作者Jugma
相关产品推荐
相关产品推荐

