遇到了什么问题?
在尝试fabric-sample中有关private-data的案例中调用 Init 方法初始化链码:init函数不存在。
解决方式,加一个空函数即可。https://github.com/hyperledger/fabric-samples/pull/207已经提了。
总结
正如private data collection案例代码注释中阐释的那样。
为了正确的配置和使用private data collection,我们需要collections_config.json里定义。
为了正确的使用rich query,我们需要在对应的collection中添加index.json
另外, 感谢david在pr的review中提到的,如果在fabric 2.0中如果我们不添加--init-required
参数的话,如https://github.com/hyperledger/fabric/pull/1405,是不需要init函数的。这里是和1.4版本需要init函数的chaincode的区别。
至于我的两个pr为什么被close,是因为nikhil550 的comments。大家感兴趣可以看一下,https://github.com/hyperledger/fabric-samples/pull/207#issuecomment-644146557
什么是私有数据?
如果一个通道上的一组组织需要对该通道上的其他组织保持数据私有,则可以选择创建一个新通道,其中只包含需要访问数据的组织。但是,在每种情况下创建单独的通道会产生额外的管理开销(维护链码版本、策略、MSP等),并且不能在保留一部分数据私有的同时,可以让所有通道参与者看到该事务。
这就是为什么从v1.2开始,Fabric 提供了创建私有数据集合的功能,它允许在通道上定义的组织子集能够背书、提交或查询私有数据,而无需创建单独的通道。
步骤
在 Fabric 中使用私有数据
本教程将演示如何使用集合在区块链网络中授权的 Peer 节点上存储和检索私有数据。
本教程需要你已经掌握私有数据存储及其使用方法。更多信息,请查看 私有数据。…
验证2.0的新功能
验证数据库
验证rich query
test-network % peer chaincode query -C mychannel -n marblesp -c '{"Args":["QueryMarbles","{\"selector\":{\"owner\":\"tom\"}}"]}'
[{"docType":"Marble","name":"marble1","color":"blue","size":35,"owner":"tom"}]
参考:
- https://hyperledger-fabric.readthedocs.io/en/release-2.1/private_data_tutorial.html
- https://hyperledger-fabric.readthedocs.io/zh_CN/latest/private-data/private-data.html