在相同的链代码中写入状态之后读取状态

时间:2017-04-23 11:56:30

标签: blockchain hyperledger hyperledger-fabric

我按照使用docker的说明设置了Fabric,一切正常。我有一个链代码,它存储一个世界状态的值,之后我可以使用查询方法读取它。

我的场景是这样的:我在短时间内提交了多个单独的请求,以便在世界状态中存储不同的数据。在每个请求中,我需要读取之前提交的数据。但是,我无法阅读最近提交的数据。

我的理解是,可能是因为这些数据可能尚未存储在区块链中,因此无法读取。基于这种理解,我引入了一个睡眠功能,让我们睡眠几秒钟,以便为之前提交的数据提供足够的时间来包含在区块链中。但是,这种方法并不成功。

所以我想知道在存储后续数据后是否有任何方法可以读取以前的数据。

谢谢, Ripul

1 个答案:

答案 0 :(得分:1)

在链码中等待几秒钟是不够的。在链代码中“写入”的数据尚未提交给数据库,这只是在此时向数据库写入内容的提议。只有已提交的数据以链码形式回读。因此,在您对chaincode进行更新并获得提案响应后,您必须将交易提交给订购。 orderer可能需要几秒钟来剪切块,将其分发给对等体,并让对等体提交数据。只有这样才能以链码回读数据。

如果您必须读取您在同一个链代码函数中编写的数据,那么您需要保留已编写数据的映射并从映射中检索值,而不是从已提交的数据库中检索。