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

问题描述 投票:0回答:3

只是一个普遍的问题,如果我正在为一个企业构建区块链,我想存储3年的交易,但是我不需要的任何东西,并且不想在工作数据库中积极地进行。有没有办法备份和清除区块链或删除超过某个时间范围的项目?我对事件逻辑比对永远记忆方面更感兴趣。

hyperledger-fabric blockchain
3个回答
1
投票

我还没有意识到任何区块链技术,但Hyperledger Fabric特别计划支持数据存档(检查点)。简单地说,参与者需要就块高度达成一致,以便可以丢弃旧块。然后,这个新的块成为信任的来源,类似于原始的创世块。此外,需要拍摄并同意快照,从而捕获当前状态。

从可维护性的角度来看,它稍微复杂一点,即您可能在快照时有节点关闭等。


0
投票

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

blockToLive表示数据在块方面应该在私有数据库上存在多长时间。数据将在私有数据库上为此指定数量的块生效,之后将被清除,使得此数据从网络中过时,从而无法从链代码查询,并且无法提供给请求对等方

你可以阅读更多here

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


0
投票

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

已经提到过一件事。这是关于私人数据。私人数据使您可以通过生存时间“标记”数据。然后只有私有数据哈希值存储在链上(以便能够验证此事务),但数据本身存储在所谓的SideDB中并被完全修剪(当然,除了链上的哈希值)。这是使用Fabric没有解决方法和实现GDPR的基础。

另一件尚未提及的事情对这个问题非常有帮助

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.