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

问题描述

我知道在交易中使用 putState() 会记录在分类帐中,而 putPrivateData() 会导致将哈希存储在分类帐中。如果在一个事务中同时使用两者会怎样?可以在公共分类账上查看私人数据吗? 示例代码

async SignContract(ctx,collectionName) {

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

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...