Corda:合同附件如何在交易中转移?
该页说明: 附件是通过哈希从事务中引用的ZIP/JAR文件, 但不包括在交易本身中 然而,缔约国指出: 包含state和contract类的JAR,以及可选的 依赖项都附加到事务 还有一个代码片段显示了如何添加合同约束:Corda:合同附件如何在交易中转移?,corda,Corda,该页说明: 附件是通过哈希从事务中引用的ZIP/JAR文件, 但不包括在交易本身中 然而,缔约国指出: 包含state和contract类的JAR,以及可选的 依赖项都附加到事务 还有一个代码片段显示了如何添加合同约束: transaction.addOutputState(state, constraint = HashAttachmentConstraint(serviceHub.cordappProvider.getContractAttachmentID(CONTRACT_ID)!!))
transaction.addOutputState(state, constraint = HashAttachmentConstraint(serviceHub.cordappProvider.getContractAttachmentID(CONTRACT_ID)!!))
然而,在签出代码时,我看不到它包含Contract Jar文件的内部内容
我的假设是,我们没有将合同Jar与事务一起转移。发生的情况可以描述为:
验证约束(contractAttachmentsByContract)
,并根据节点在其本地存储中的附件验证这些约束(例如HashAttachmentConstraint)您认为附件未在事务内部传输是正确的。事务仅包含用于数据引用目的的对附件的哈希引用。这也意味着附件可以在许多事务中重复使用,因为它们是在自己的数据库表中进行链外维护的 当节点收到包含附件的交易时,Corda将自动从交易对手处获取附件,该交易之前从未见过: 通常通过
ReceiveTransactionFlow
自动获取事务的附件
只要附件小于网络参数的maxTransactionSize,则无需任何开发工作即可进行此传输:
maxTransactionSize:事务允许的最大大小(以字节为单位)。这是事务对象及其附件的大小
此时的合同附件通常由Cordapp开发人员预先分发和签署,并由Corda节点的所有者部署。此时,Cordapps通常不会以编程方式安装。您好。这是否意味着自动提取不适用于合同附件?或者甚至自动获取合同附件,并且接收节点不需要预先安装合同jar?@AshishSinha合同附件由接收节点自动获取,如果它们没有合同jar的副本。但是,您必须确保契约jar与接收节点兼容。应该考虑签名约束、最低平台版本和模式兼容性,以确保节点可以运行契约jar。