【发布时间】:2019-06-13 05:40:02
【问题描述】:
Using Attachments 页面声明:
附件是通过哈希从交易中引用的 ZIP/JAR 文件, 但不包含在交易本身中。
但是,API: Contract Constraints page 声明:
包含状态和合同类的 JAR,以及可选的它的 依赖关系,都附加到事务中。
还有一段代码 sn-p 展示了如何添加合约约束:
transaction.addOutputState(state, constraint = HashAttachmentConstraint(serviceHub.cordappProvider.getContractAttachmentID(CONTRACT_ID)!!))
但是,在查看 HashAttachment 代码时,我没有看到它包含 Contract Jar 文件的内部结构。
我的假设是我们不会将 Contract Jar 与交易一起转移。可以描述会发生什么:
- 在节点启动期间,Corda 会扫描所有 CorDapp,并将包含 Contract 类的 jar 加载到本地附件存储中。
- 事务中的每个输出状态都可以有一个合同约束。
- 在验证阶段,
verifyConstraints(contractAttachmentsByContract)将被调用,这些约束(例如 HashAttachmentConstraint)将根据 Node 在其本地存储中的附件进行验证。
问题:
- 交易是否包含合同附件?
- 该合同附件是通过网络传输还是使用本地附件存储中的附件进行验证?
- 我的假设中遗漏了什么?
【问题讨论】:
标签: corda