putState() 和 putPrivateData() 可以在同一个链代码中使用吗?

Can putState() and putPrivateData() be used in the same chaincode?

我知道在交易中使用 putState() 会记录在分类帐中,而 putPrivateData() 会导致哈希存储在分类帐中。如果两者都用于一次交易会怎样? public 分类账上是否可以查看私人数据? 示例代码:

async SignContract(ctx, collectionName) {

  await ctx.stub.putState(key, value);
  await ctx.stub.putPrivateData(collectionName, key, privateValue);
}

写入 public 分类帐的状态将是 public 而写入私有数据集合的状态对于可以查看该私有数据集合的组织来说是私有的。您可以在单个事务中读取和写入多个集合中的多个键,并且该数据的可见性仍然由存储数据的集合的可见性决定。

Fabric 示例中的这个示例演示了在单个事务函数中写入 public 数据、私有数据和基于状态的背书策略的组合:

https://github.com/hyperledger/fabric-samples/blob/6875049c8de49dec3335363aabc0e2920cd81235/asset-transfer-secured-agreement/chaincode-go/asset_transfer.go#L46