我正在尝试Hyperledger Composer,我只是想知道当我们删除资产时会发生什么。是否可能从区块链中移除/ 删除任何内容?
或者我们只是标记资产已删除,但实际上该资产的所有交易记录在区块链中仍然存在?
当我删除资产时,我仍然看到块编号增加。所以我感觉资产可能没有被删除(如已删除),但只是标记了当前状态被删除。
我尝试使用相同的ID创建资产,但它确实有效。我可以删除和重新创建我想要的块数总是增加。
按照上述步骤,重新启动整个Hyperledger网络(例如,从网络中的所有计算机重新加载Docker镜像)删除区块链的唯一真正方式?
提前谢谢。
答案 0 :(得分:2)
听起来你说得对。不,区块链上的数据不会被删除。删除只是另一个事务,说某些数据被删除,因此世界状态数据库(具有未删除信息的数据库)可以删除该数据。
由于区块链在后台是Merkle Tree(或者可能是Hashgraph ...),因此它按照这些规则进行播放并且是不可变的。除非从计算机中删除分类帐和事务,例如重新启动网络并从对等方删除所有信息,否则数据将始终存在。这基本上是用于保存分类帐的网络结构的每台机器的擦除。对于比特币而言,这是每个人,对于许可的区块链,可能只是少数机器并且可能合理地发生。
然而,这是理论上的,并且区块链的不同实现会变得有点复杂。听起来你正在使用Hyperledger Fabric,所以我们以此为例。如果您正在动态升级网络的业务网络定义并且资产定义已更改且不支持注册表中的现有资产,那么它们实际是否已删除?我不确定,但我知道它们不会出现在查询中,这可能实际上是相同的。同样,如果您设置ACL规则或使用加密,那么也可能会删除标记的资产,因为存在许多障碍(请参阅安全和访问控制的docs)随机参与者查看该数据。因此,根据您的数据的敏感程度,这可能并不重要。