- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 IBM Hyperledger Fabric 的新手。
在尝试查看文件时,我看到有几个状态
getState、putState、delState 等
https://github.com/hyperledger/fabric/blob/master/core/chaincode/shim/chaincode.go
我想知道分类帐是否是“不可变的和链接的”,我们如何“删除”状态?
鉴于它是一个由每笔或多笔交易链接的分类账,难道不是不可能删除状态或至少破坏哈希链吗?
谢谢!
最佳答案
有一个存储键及其值的状态数据库。这与组成区块链的区块顺序不同。可以使用 DelState 函数从状态数据库中删除键及其关联的值。然而,这并不意味着区块链上的区块会发生变化。键和值的删除将作为交易存储在区块链上,就像之前的添加和任何修改都作为交易存储在区块链上一样。
关于不同的哈希,如果存在非确定性链码,则块哈希可能会发生分歧。应避免创建非确定性的链码。这是一个 documentation topic讨论非确定性链码。
删除 key 后可以检索 key 的历史记录。有一个 GetHistoryForKey() API 可以检索历史记录,其响应的一部分是一个 IsDeleted 标志,用于指示 key 是否已被删除。可以创建 key ,删除 key ,然后重新创建 key ; GetHistoryForKey() API 将跟踪这种情况。
状态数据库存储当前状态,因此键及其值从状态数据库中删除。 GetHistoryForKey() API 检查链历史而不是状态数据库以查找先前的键值。
有一个example说明了 GetHistoryForKey() API 的使用。请参阅 getHistoryForMarble 函数。
关于blockchain - delState 在 Fabric 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623517/
我是 IBM Hyperledger Fabric 的新手。 在尝试查看文件时,我看到有几个状态 getState、putState、delState 等 https://github.com/hyp
我是一名优秀的程序员,十分优秀!