我需要检查公证人如何防止 Obligation Cordapp 中的双重支出。我在 localhost 端口启动了 Web 服务器 UI 并执行了多个事务,当我检查公证人的日志时,我发现了这一点:
[警告] 2020-06-24T08:29:33,484Z [公证请求队列处理器] transactions.PersistentUniquenessProvider。- 无法公证:一个或多个输入状态或引用状态已在其他交易中用作输入状态。Conflicting state count: 1, consumption details: 7CF1BCA8EDF25F0602BBEDF8AD41FD60336F65EAC09C5326478A4CB7CD620579(0) -> StateConsumptionDetails(hashOfTransactionId=46552C5CE153712B65585A75C4D165CD4A05304564C8797ACEF317DCD925B72E, type=INPUT_STATE). 要查明此节点是否已生成任何冲突事务,您可以使用 hashLookup Corda shell 命令。[errorCode=1g4005y, moreInformationAt=https://errors.corda.net/OS/4.5-RC02/1g4005y] net.corda.core.internal.notary.NotaryInternalException:无法公证:一个或多个输入状态或引用状态已被用作其他事务中的输入状态。Conflicting state count: 1, consumption details: 7CF1BCA8EDF25F0602BBEDF8AD41FD60336F65EAC09C5326478A4CB7CD620579(0) -> StateConsumptionDetails(hashOfTransactionId=46552C5CE153712B65585A75C4D165CD4A05304564C8797ACEF317DCD925B72E, type=INPUT_STATE). 要查明此节点是否已生成任何冲突事务,您可以使用 hashLookup Corda shell 命令。
我对无效的 txId 执行了 hashLookup 并发现了这个:
hashLookup 46552C5CE153712B65585A75C4D165CD4A05304564C8797ACEF317DCD925B72E 找到一个匹配的交易,ID为:A86E3ECE4EC12A487E413E2BDAB9D88BFEBCB418FA0224189DE0C72BBBD34B12
我相信这就是公证人阻止双花的方式。但是我无法重新创建该测试。有人可以告诉我什么可能的输入交易导致了这个错误。我的意思是什么测试用例可以导致这种被公证人停止的双重支出测试?