在一个事务中添加输入列表时出现问题

时间:2018-02-01 09:59:39

标签: kotlin corda

我试图通过使用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。

1 个答案:

答案 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)
}