【问题标题】:chain code invoke error at private data sample for Fabric v1.4Fabric v1.4 私有数据示例中的链码调用错误
【发布时间】:2019-06-16 21:23:40
【问题描述】:

我逐步按照https://hyperledger-fabric.readthedocs.io/en/latest/private_data_tutorial.html 处的说明进行操作,但在调用链码时出现类似“错误:解析瞬态字符串时出错:字符串文字中的无效字符'\n' - 提议响应:”这样的错误。有没有人有同样的问题?你能告诉我如何解决它。非常感谢!

我按照https://hyperledger-fabric.readthedocs.io/en/latest/private_data_tutorial.html 的说明一步步操作,但调用链码时出错

返回是“错误:解析瞬态字符串时出错:字符串文字中的无效字符'\n' - 提案响应:”

我在下面发出调用命令: export MARBLE=$(echo -n "{\"name\":\"marble1\",\"color\":\"blue\",\"size\":35,\"owner\":\"汤姆\",\"价格\":99}" | base64) peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com /msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n marblesp -c '{"Args":["initMarble"]}' --transient "{\"marble\":\"$MARBLE \"}"

export MARBLE=$(echo -n "{\"name\":\"marble1\",\"color\":\"blue\",\"size\":35,\"owner\" :\"tom\",\"price\":99}" | base64) peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com /msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n marblesp -c '{"Args":["initMarble"]}' --transient "{\"marble\":\"$MARBLE \"}"

期望: [chaincodeCmd] chaincodeInvokeOrQuery->INFO 001 链码调用成功。结果:状态:200

实际结果: “错误:解析瞬态字符串时出错:字符串文字中的无效字符 '\n' - 提案响应:”

【问题讨论】:

    标签: hyperledger-fabric


    【解决方案1】:

    Fabric private data tutorial 已更新以指示换行符应使用 tr -d \\n 剥离,如下所示:

    export MARBLE=$(echo -n "{\"name\":\"marble1\",\"color\":\"blue\",\"size\":35,\"owner\":\"tom\",\"price\":99}" | base64 | tr -d \\n)
    

    【讨论】:

      【解决方案2】:

      请问你用的是什么机器?并检查 tr -d \n 是否存在而

      export MARBLE=$(echo -n "{\"name\":\"marble1\",\"color\":\"blue\",\"size\":35,\"owner\" :\"tom\",\"price\":99}" | base64 | tr -d \n)

      给定

      tr 命令去除 linux base64 命令添加的有问题的换行符。

      如果问题仍然存在,您可以参考 How can I replace a newline (\n) using sed? 并尝试

      tr -d '\n'

      tr --delete '\n'

      【讨论】:

      • 您好,Harshit,感谢您的及时回复。我使用 Ubuntu 16.04。它在我添加 tr -d '\n' 后工作。正确的命令是: "export MARBLE=$(echo -n "{\"name\":\"marble1\",\"color\":\"blue\",\"size\":35,\" owner\":\"tom\",\"price\":99}" | base64 | tr -d '\n') 谢谢!
      • 太好了:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多