超级账本Fabric 1.4私有数据集收集

5

Hyperledger Fabric提供内置支持,在私有收集(private collections)的帮助下存储offchain数据。为此,我们需要指定包含各种收集名称以及可以访问这些收集中数据的参与者的“collection config”(收集配置)。

有一个名为"BlockToLive"的设置,使用它我们可以指定对于多少个区块(blocks),同行(peer)应该存储他们可以访问的私有数据。当分类账(block height)高度达到指定阈值时,同行将自动清除(private data)私有数据。

我们有一个需求,需要使用私有数据集合,但这些数据应在30天后被移除(自动/手动)。是否有可能实现相应的功能呢?

  1. timeToLive: 是否有指定timeToLive或类似配置的实现方式?使用此选项,同行将在指定时间段后自动清除数据。
  2. 如果当前没有可能实现自动方式,是否有任何一种方式可以手动删除私有收集中的数据?是否有任何外部脚本或代码可以直接删除私有数据集合中的数据?我们不想创建链码方法来作为调用事务来删除私有数据,因为即使删除私有数据,也需要得到认可并发送到排序器(orderer),并且需要添加到分类账(ledger)中。如何直接删除私有数据?

解决这个问题有什么指针吗? - Rahul Malu
1个回答

0
首先,你将所有的东西放在区块链上,这些都是永久性的,并且应该是去中心化的。所以,单方面控制何时删除私有数据违背了去中心化的原则,你应该避免这样做(回答第二个问题)。认可者认可每一个变化或交易(包括BlockToLive),所以不推荐从已经达成的协议期限中偏离。
其次,分布式系统中的时间是主观的,不可能有全局时钟⏰(例如对于一个节点而言30天可以是另一个节点的29.99天或29.80天)。因此,时间是用块来测量的,它对所有节点都是客观的。所以,建议您使用BlockToLive。这可能起初有点困难,但您可以反向计算。比如说,如果您的BlockSize为10(每块中的交易数),预计每天有100笔交易,那么您可以将BlockToLive设置为300。(当然,这只是一个大概的数字)
最后,如果您仍然希望随意删除私有数据,我建议您使用手动离线存储机制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接