在两个节点之间运行InitiatingFlow / InitiatedBy时,我的公证节点发出错误:java.lang.Exception: Malformed transaction, OUTPUTS_GROUP at index 0 cannot be deserialised
在跟踪中更进一步:Caused by: java.lang.ClassNotFoundException: xxx.xxx.xxx.shared.states.OrderItemState
在我的公证人中包含“共享”CordApp的地方修复了这个问题,但是我不明白为什么这是必要的?
我能够在节点之间来回发送其他状态,而不包括CordApp
唯一不同的是,OrderItemState
是LinearState
,其他FungibleAsset
,我是否在那里寻找答案?
答案 0 :(得分:2)
我假设您正在使用验证公证人。验证公证是检查交易是否有效,以及检查它是否包含双重花费的尝试。这在隐私方面有成本。请参阅https://docs.corda.net/key-concepts-notaries.html#validation。
如果查看将事务发送到NotaryFlow.Client
中的公证人的代码,您可以看到验证公证人被发送到整个事务,因此需要CorDapp在其{{1}中定义所涉及的状态文件夹:
cordapps