合同jar附件虽然在一开始就被删除了,但在从发起方节点开始流程后,它重新出现在接受方节点中



网络配置
1公证人,3个节点-甲方、乙方、丙方

摘要
在下面的部分"潜在罐注射";在https://training.corda.net/prepare-and-discover/see-db/,我注意到,合同jar附件虽然一开始就被删除了,但在刚从甲方启动流程后,它就重新出现在了乙方的node_attachment和node_attahment_contract表中(由于node_attatchent和node_attachment_contral表中缺少合同jar,导致乙方没有回复而失败(。为什么会发生这种情况?为什么合同jar再次出现在乙方节点?

详细信息
我首先从乙方节点中删除了合同jar(在node_attachments和node_attahments_conducts表中交叉检查,两者都为空(,然后通过启动了来自甲方的流程

flow启动ExampleFlow$Initiator iouValue:50,otherParty:"O=乙方,L=纽约,C=美国";

但就在运行流之后,合同jar附件再次出现在乙方的node_attachments和node_attahments_concontracts表中。为什么会发生这种情况?当我查看乙方node_attachments表中的条目时,我发现以下内容:

>><1>
ATT_ID FILENAME INSERTION_DATEUPLOADER
E3C04EE4DBB0B65FC5F299EFF1C9CB7190021ECECB1505C2E7FD54F778C1A2 null 2021-03-11 20:03.409p2p:O=PartyA,L=London,C=GB
  1. 当您从a点到B点运行事务时,通常会将附件从a下载到B以验证事务。(尤其是当您使用类似ReceiveTransactionFlow的东西时(。这就是为什么附件条目也在另一台机器上的原因
  2. 这很有趣,我以前从未尝试过从不同的corda节点下载附件。如果非要我猜测的话,该机制的设计者认为没有必要存储文件名,因为他们必须唯一地识别它
  3. 我不想对这里发生的事情过于猜测,但这取决于流的实现。可能只是操作顺序与您预期的不同。例如,您可以使用子流发送附件(或者corda可以自动发送(,并且该附件可以在导致流失败的错误之前完成共享。在这种情况下,我怀疑流中的错误与附件过程无关。考虑到附件代码经过了很好的测试,这将是有意义的

我要说的最后一点是,training.cord.net网站很不幸已经过时了(我相信它是为corda 4.5编写的(。因此,可能值得仔细检查一下你是否有适合教程的版本。

关于这方面的一些额外资源:

  • 交易附件上的Corda文档页面:https://docs.corda.net/docs/corda-os/4.7/tutorial-attachments.html

最新更新