我正在使用一组Hyperledger 1.0.2 docker图像和作曲家0.11.3 我使用的练习网络是basic-sample-network,它带有SampleParticipant和SampleAsset。 我可以使用composer参与者添加以及JSON片段从命令行部署参与者。 我没有找到一个等效的命令行方法来将SampleAsset插入资产注册表。当我使用composer-rest-server POST定义SampleAsset的JSON片段时,它返回了以下错误
Error: Peer has rejected transaction '4d2...91f' with cdoe MVCC_READ_CONFLICT
然后我在阅读了关于BatchTimeout和锁定的评论之后重新提交了我没有修改的内容,因为我是婴儿连锁店的单个用户。第二次,REST服务器返回
Error: Failed to add object with ID 'assetId:1' as the object already exists)
我可以验证资产注册表是否已使用作曲家网络列表进行更新:
name: basic-sample-network
models:
- org.hyperledger.composer.system
- org.acme.sample
scripts:
- lib/sample.js
registries:
org.acme.sample.SampleAsset:
id: org.acme.sample.SampleAsset
name: Asset registry for org.acme.sample.SampleAsset
registryType: Asset
assets:
assetId:1:
$class: org.acme.sample.SampleAsset
assetId: assetId:1
owner: resource:org.acme.sample.SampleParticipant#Toby
value: new value
org.acme.sample.SampleParticipant:
id: org.acme.sample.SampleParticipant
name: Participant registry for org.acme.sample.SampleParticipant
registryType: Participant
assets:
Toby:
$class: org.acme.sample.SampleParticipant
participantId: Toby
firstName: Tobias
lastName: Hunter
为什么这个奇怪的行为来自REST服务器,它抱怨MVCC_READ_CONFLICT但是还插入了记录,是否有一种方法我错过了从命令行插入SampleAsset?
答案 0 :(得分:1)
嗯...不确定为什么你会收到一个MVCC错误(如你所说,不能像你所显示的那样确实添加的资产)。
<div class="parent">
<div class="child red">Red</div>
<div class="child green">Green</div>
<div class="child blue">Blue</div>
</div>
是提交事务的方法(比如)从命令行添加资产 - 文档中的示例(&#39;示例命令&#39;)和下面的另一个:
https://hyperledger.github.io/composer/reference/composer.transaction.submit.html