首页 > 解决方案 > 使用 Go SDK 从 Hyperledger Fabric 交易中读取数据

问题描述

我想在 Hyperledger Fabric 上锚定一些数据,这些数据应该是不可变的,这样当我以后任何时候读取这个值时,这个值应该保持不变。

我想我可以修改 stateDB 并将该数据存储为键值对使用stub.PutState

{
  "data": "mydata"
}

并记下交易 ID。

但是,由于状态数据库是可变的,我可以做这样的事情而不是做stub.GetState

stub.GetHistoryForKey("data")

遍历并匹配事务 ID,然后读取键的值。

但是,鉴于我已经拥有事务 ID 而不是遍历历史记录,有没有办法直接从事务中读取此值?

还是有更好的方法来做到这一点?

标签: hyperledger-fabrichyperledger-chaincode

解决方案


您可以使用QueryBlockByTxnID方法或QueryTransaction方法(如评论中的kartik所述)。但是您需要自己解析或格式化数据。

这是github参考:https ://github.com/hyperledger/fabric-sdk-go/blob/87f5eb8a655f3d2588e5d1729b2ecf888e52f4ac/pkg/client/ledger/ledger.go#L277


推荐阅读