Corda 4 - Single Party Transaction Failed to Commit to Ledger

孤街浪徒 提交于 2020-01-14 06:20:10

问题


While upgrading from Corda 3 to Corda 4, I have an issue commiting a State to our node's ledger with only one Party. A single Party is able to create a state, notarize it, but CANNOT commit to the Corda 4 ledger without asking for an external third party.

The error Corda 4 produces (which Corda 3 did not produce) is the following: (1) java.lang.IllegalArgumentException: A flow session for each external participant to the transaction must be provided. If you wish to continue using this insecure API then specify a target platform version of less than 4 for your CorDapp.

More specific context: Using FinalityFlow without a session yields a 'session required for external parties' error and does not complete. Adding only a session (e.g. session = initiateFlow(PartyA) ) results in an error that 'local nodes should not be included.'

Is there a workaround regarding this solution? It's important (for our use case) that a single Party can create a State and modify the State information without the involvement of other parties. Other use cases (where multiple parties are included) stem from this use case. Any guidance is greatly appreciated.


回答1:


I think the error message is pretty spot on here. Just change the way you call FinalityFlow during your issuance such that it doesn’t contain a flow session to itself i.e.

return subFlow(new FinalityFlow(signedTransaction));

Although you may get a deprecation warning, in which case, do the following

return subFlow(FinalityFlow(stx, emptyList())) 


来源:https://stackoverflow.com/questions/54875913/corda-4-single-party-transaction-failed-to-commit-to-ledger

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!