我是超级账本的新手。发出发布请求时,在composer rest服务器中出现错误。 我把它放在请求中
{
"$class": "org.example.biznet.SampleAsset",
"assetId": "string",
"owner": {},
"value": "string"
}
我的cto文件是 命名空间org.example.biznet
participant SampleParticipant identified by participantId {
o String participantId
o String firstName
o String lastName
}
asset SampleAsset identified by assetId {
o String assetId
--> SampleParticipant owner
o String value
}
transaction SampleTransaction {
--> SampleAsset asset
o String newValue
}
event SampleEvent {
--> SampleAsset asset
o String oldValue
o String newValue
}
答案 0 :(得分:0)
您似乎正在使用示例JSON,但不幸的是它存在错误。
您在SampleAsset中拥有的 owner 属性是一种关系,但是只需将其表示为字符串即可。在发布请求中,您可以仅指定所有者的ID,例如"owner" : "7465",
,也可以指定整个关系字符串"owner" : "resource:org.example.biznet.SampleParticipant#7465",
注意:无论您在所有者字段中输入什么内容,Composer都不会检查或解决该关系。
答案 1 :(得分:0)
简单@ajay Singh
您必须在“所有者”键字段中将{}替换为resource:org.example.biznet.SampleParticipant#participantId
。
每次您提供诸如--> SampleParticipant owner
之类的资产中的关系时,都需要提供如上所述的关系所有者。
现在,尝试了解resource:org.example.biznet.SampleParticipant#participantId
org.example.biznet->它是cto文件的名称空间。
SampleParticipant->在您的案例中,您的cto文件可能有不止一种类型的参与者,而只有一种类型的参与者是SampleParticipant。
'#'->必须在参与者类型和参与者ID之间添加#。
participantId->您用于创建SampleParticipant的时间的唯一ID。
简单地说,这一切都描述了资产ID为001的SampleAsset由拥有PartyId为01的SampleParticipant拥有。