Warm tip: This article is reproduced from serverfault.com, please click

其他-如何从Hyperledger Fab测试网络中删除资产?

(其他 - How to delete asset from hyperledger fab test-network?)

发布于 2020-12-02 11:39:03

我正在尝试在Hyperledger Fabric节点版本2.4上运行test_network。参见此处:https : //hyperledger-fabric.readthedocs.io/en/latest/test_network.html#interacting-with-the-network

我可以使用ReadAsset和UpdateAsset函数查询网络。

但是,使用以下查询的DeleteAsset函数不起作用。

对等链码查询-C mychannel -n基本-c'{“ Args”:[“ DeleteAsset”,“ idOfasset”]}'

其中,idOfasset是我要从分类帐中删除的资产的ID或密钥。

其次,如果命令将执行,我是否要从世界数据库或状态数据库中删除资产?或者当我执行ReadAsset时,换一种说法,它是从世界状态或通道状态数据库中读取的?

谢谢,帮助会很棒。

Questioner
Tarzan
Viewed
0
Kartik Chauhan 2020-12-03 14:50:13

删除资产会更改资产的状态。对于涉及修改变量状态的任何类型的操作,都invoke将使用命令。每个“调用”事务都将添加到分类账中的“块”中。query当你只想查询链式代码以读取资产的当前值时使用。因此,invoke代替query你的命令使用。

谈到你的第二个问题

其次,如果命令将执行,我是否要从世界数据库或状态数据库中删除资产?或者当我执行ReadAsset时,换一种说法,它是从世界状态或通道状态数据库中读取的?

世界数据库和州数据库与你的CouchDB / LevelDB相同。从Hyperledger Fabric的文档中:

有一个世界状态-一个数据库,该数据库保存一组分类账状态的当前值。世界状态使程序可以轻松地直接访问状态的当前值,而不必通过遍历整个事务日志来计算状态值

你可以在此处了解更多信息

当执行删除操作时,Hyperledger Fabric并不会真正“删除”资产。区块链是不可变的,不会删除区块链上的任何数据。删除只是另一个事务,它说某些数据已删除,因此世界状态数据库可以删除该数据。

你可以参考以获取更多信息。