我试图通过使用toTypedArray在一个事务中添加输出列表。在该输出列表中,每个输出具有不同的签名者和相同的合同。当我运行cordapp并使用一些输入命中WS时,合同验证失败并且抛出异常,因为List有多个元素。
<img src="{{ bannerimg }}">
我试过删除契约中的val states:ArrayList<IOU>()
for(i in data.indices) {
val state=IOU(data[i],initiator,acceptor)
signers=state.participants.map{it.owingkey}
txbuilder.addcommand(contract1,signers)
states.add(state)
}
txbuilder.withitems(*states.map {
StateAndContract(it, Contract.ID)
}).toTypedArray
txbuilder.verify(servicehub)
.
.
.
.
.
.
/*****Contract Code******////
out = tx.outputsOfType<IOU>().single()
"The sender and the recipient cannot be the same entity." using
(out.party1!= out.party2)
。但我不知道在那之后继续进行。删除单个后,outputofTypes更改为list。
答案 0 :(得分:0)
问题是single
抛出异常,因为列表中没有一个项目。您需要遍历verify
中的状态,执行以下操作:
outputs = tx.outputsOfType<IOU>().single()
for (output in outputs) {
"The sender and the recipient cannot be the same entity." using
(output.party1! = output.party2)
}