Hyperledger fabric 可以从区块链中删除旧块数据吗?

Hyperledger fabric 可以从区块链中删除旧块数据吗?,hyperledger-fabric,blockchain,Hyperledger Fabric,Blockchain,这只是一个一般性问题,如果我正在为一家企业构建区块链,我想在工作数据库中存储3年的交易,但不需要也不希望存储任何比这更久的交易。有没有办法备份和清除区块链或删除超过某个时间范围的项目?我对事件逻辑比对永久内存方面更感兴趣。我还不知道有任何区块链技术能够做到这一点,但Hyperledger Fabric尤其计划支持数据归档(检查点)。简言之,参与者需要就街区高度达成一致意见,以便丢弃较旧的街区。这个新的区块然后成为信任的来源,类似于原始的genesis区块。此外,还需要拍摄快照并征得同意,以捕获当

这只是一个一般性问题,如果我正在为一家企业构建区块链,我想在工作数据库中存储3年的交易,但不需要也不希望存储任何比这更久的交易。有没有办法备份和清除区块链或删除超过某个时间范围的项目?我对事件逻辑比对永久内存方面更感兴趣。

我还不知道有任何区块链技术能够做到这一点,但Hyperledger Fabric尤其计划支持数据归档(检查点)。简言之,参与者需要就街区高度达成一致意见,以便丢弃较旧的街区。这个新的区块然后成为信任的来源,类似于原始的genesis区块。此外,还需要拍摄快照并征得同意,以捕获当前状态


从可维护性的角度来看,它稍微复杂一些,例如,在快照等过程中,可能会有节点停机。

如果您只是想在一段时间后清除数据,Fabric Private data有一个选项可以满足您的需要

blockToLive
表示数据在私有数据库中的生存时间 块的术语。数据将在此指定数量的 私有数据库上的块,然后它将被清除, 使此数据从网络中过时,以便无法 从chaincode查询,无法提供给请求 同行

你可以读更多


就我个人而言,我不认为有办法从链条上移除一个块。它可能会破坏区块链的不变属性。

有两个概念可以帮助您实现目标

有一件事已经提到了。这是关于私人数据的。私有数据为您提供了一种可能性,可以用生存时间来“标记”数据。然后,只有私有数据散列存储在链上(以便能够验证此事务),但数据本身存储在所谓的SideDBs中,并被完全删除(当然,链上的散列除外)。这是使用无需变通的织物并实现GDPR的基础

另一件事,还没有提到,对这个问题很有帮助

有没有办法备份和清除区块链或删除超过某个时间范围的项目

每个对等方只在其StateDB中存储分类账的“当前状态”。当前状态可以描述为标记为“活动”且可能很快再次使用的数据。您可以将StateDB想象成一个缓存。通过创建或更新一个新密钥(调用),每个数据都会进入该缓存。要从缓存中删除密钥,可以使用“DelState”。因此它被标记为“已删除”,不再在缓存中。但它仍然在账本上!您可以检索该键的历史记录和数据

结论:对于“真正”删除数据,您必须使用私有数据的概念,对于管理StateDB中的数据(想想“缓存”类比),您可以简单地使用内置函数