Hyperledger Fabric中ChaincodeStub.delState对账本有什么影响?
delState 方法对Hyperledger Fabric账本的作用说明 Hyperledger Fabric的账本由世界状态和区块链交易日志两个独立组件组成,org.hyperledger.fabric.shim.ChaincodeStub.delState(String key)对两者的影响完全不同,刚好对应“链上数据不可篡改删除,但存在删除方法”的特性:
官方对该方法的定义如下:
Records the specified key to be deleted in the writeset of the transaction proposal. The key and its value will be deleted from the ledger when the transaction is validated and successfully committed.
对世界状态的影响
世界状态是用于存储业务数据最新值的键值数据库,作用是降低数据读取成本,无需遍历全链就能直接拿到当前最新值:
- 调用
delState的交易通过校验、成功提交后,指定的key会被直接从世界状态中移除 - 后续调用
getState查询该key时会返回空值,业务层面可以达到“数据已删除”的使用效果
对区块链交易日志的影响
区块链是只追加、不可篡改的交易序列,所有账本操作的完整记录都会永久保存在链上:
delState操作本身会作为一条有效交易,完整记录在对应区块中,永远不会被删除- 该key的所有历史值、创建时间、删除时间都可以通过
getHistoryForKey接口、区块遍历等方式完整追溯,不存在任何历史记录被抹去的可能
补充说明
如果业务需要彻底擦除敏感数据,仅调用delState无法实现,因为链上交易日志仍留存了所有历史操作记录,这类场景需要配合私有数据集合、事前数据脱敏等方案实现。
内容的提问来源于stack exchange,提问作者user10931326
相关产品推荐
相关产品推荐

