delState如何在Fabric中工作?

alw*_*ous 2 blockchain hyperledger-fabric

我是IBM Hyperledger Fabric的新手。

在尝试查看文档时,我看到有几个状态getState,putState,delState等。

https://github.com/hyperledger/fabric/blob/master/core/chaincode/shim/chaincode.go

我想知道分类帐是否“固定不变”,我们如何“删除”状态?

假设这是一个由每个事务或每个事务链接的分类帐,不是不可能删除状态或至少破坏哈希链吗?

谢谢!

And*_*arp 5

有一个状态数据库,用于存储键及其值。这与构成区块链的区块顺序不同。可以使用DelState函数从状态数据库中删除键及其关联的值。但是,这并不意味着区块链上的区块发生了变化。密钥和值的删除将作为交易存储在区块链上,就像之前添加的内容和任何修改一样作为交易存储在区块链上。

关于不同的哈希,如果存在不确定的链码,则块哈希可能会发散。应避免创建不确定的链码。这是一个讨论非确定性链码的文档主题

删除密钥后,可以检索密钥的历史记录。有一个GetHistoryForKey()API可以检索历史记录,其响应的一部分是IsDeleted标志,该标志指示密钥是否已删除。可以创建一个密钥,删除该密钥,然后再次创建该密钥。GetHistoryForKey()API会跟踪这种情况。

状态数据库存储当前状态,因此将从状态数据库中删除键及其值。GetHistoryForKey()API会查看链历史记录,而不是状态数据库,以查找先前的键值。

有一个示例说明了GetHistoryForKey()API的用法。请参见getHistoryForMarble函数。