我是超级账本的新手。当我发布请求时,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
}
看起来您使用的是示例JSON,但不幸的是它出现了错误。
SampleAsset中的owner属性是一个关系,但它只需要表示为字符串。在发布请求中,您可以只指定所有者的ID,例如"owner" : "7465",
,也可以指定整个关系字符串"owner" : "resource:org.example.biznet.SampleParticipant#7465",
注意:无论您在所有者字段中输入什么,Composer都不会检查或解决关系。
只是简单的@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由参与者ID为01的SampleParticipant所有。