只是一个普遍的问题,如果我要为业务构建区块链,我想存储3年的交易,但是任何比我更需要的交易都不需要,也不想在工作数据库中积极进行。有没有办法备份和清除区块链或删除超过某个时间范围的项目?我对事件逻辑比对永久性存储器更感兴趣。
答案 0 :(得分:1)
我还不知道任何能够实现此功能的区块链技术,但是Hyperledger Fabric尤其计划支持数据存档(检查点)。简而言之,参与者需要就区块高度达成共识,以便可以丢弃较旧的区块。然后,这个新区块成为信任的来源,类似于原始的创世区块。此外,还需要获取并同意快照,以捕获当前状态。
从可维护性的角度来看,它稍微复杂一些,即,您可能在快照时出现节点故障等情况。
答案 1 :(得分:0)
如果您只是想在一段时间后清除数据,Fabric Private Data可以满足您的需求。
blockToLive
表示数据在以下位置的私有数据库上应保留的时间: 条款。数据将以指定的数量存在 私有数据库上的块,然后将其清除, 使该数据从网络上过时,以至于 从链码中查询,无法用于请求 同行
您可以阅读更多here。
就我个人而言,我认为没有办法从链条中删除一个区块。可能会破坏区块链的不可变属性。
答案 2 :(得分:0)
有2个概念可以帮助您实现目标。
已经提到了一件事。它与私有数据有关。私人数据使您可以“标记”带有生存时间的数据。然后,只有私有数据哈希存储在链上(以便能够验证此事务),但是数据本身存储在所谓的SideDB中,并被完全修剪(当然,链上的哈希除外)。这是使用没有解决方法的Fabric并实现GDPR的基础。
尚未提及的另一件事对这个问题很有帮助
是否有办法备份和清除区块链或删除早于某个时间范围的项目?
每个对等方仅将分类帐的“当前状态”存储在其StateDB中。当前状态可以描述为标记为“活动”的数据,并且可能很快会再次使用。您可以认为StateDB就像一个缓存。通过创建或更新新密钥(调用),每个数据都将进入此缓存。要从缓存中删除密钥,可以使用“ DelState”。因此,它被标记为“已删除”,不再存在于缓存中。但是它仍然在分类帐上!您可以检索该键的历史记录和数据。
结论:对于“真正”的数据删除,您必须使用私有数据的概念,并且要在StateDB中管理数据(以“ Cache”为类推),您可以简单地使用内置函数。