【问题标题】:How can I change types of Contract Constraints to Signature constraint in corda production env如何在corda生产环境中将合同约束类型更改为签名约束
【发布时间】:2021-09-01 00:59:21
【问题描述】:

当我更新 corda 合同应用程序时出现错误

java.lang.IllegalArgumentException:已在事务构建器中为合同 com.fna.contracts.contract.InvoiceContract 显式设置了一个附件,该附件与状态的 HashConstraint 冲突。

关于保险库中的数据,我发现合同类型是“HashAttachmentConstraint”。但在开发环境中是“签名约束”。我可以在生产环境中将 HashAttachmentConstraint 更改为 Signature Constraints

enter image description here

【问题讨论】:

    标签: blockchain corda


    【解决方案1】:

    查看图像,很明显您有一些使用 HashConstraint 的状态。我建议您按照以下步骤执行 HashConstraint 状态到签名约束的迁移。

    1. 停止您的节点。
    2. 在罐子上签名。要对 jar 进行外部签名,请使用 jarsigner。默认情况下,如果您在 Corda 版本 4 中未禁用签名,则在运行 deployNodes 任务时会对 jar 进行签名。
    3. 用这个新签名的 jar 替换旧 jar。
    4. 通过将 Java 系统属性设置为 -Dnet.corda.node.disableHashConstraints=”true” 来禁用哈希约束来启动节点。
    5. 启动节点。
    6. 运行一个使用旧哈希约束状态并发出新签名约束状态的流。您应该会看到使用签名约束的新状态。

    您可以参考执行此操作的示例here

    查看this 博客以了解有关此主题的更多信息。

    最后,您还可以查看video,它显示了如何做同样的事情。

    您也可以在docs 中找到有关合约迁移的更多信息。

    【讨论】:

    • 从示例中我认为它是迁移散列附件到签名,但对我来说,我更喜欢第一笔交易必须是签名约束。我的意思是每笔交易都是签名约束当我在本地发出交易时,它可以工作,但在生产环境中它对我不起作用
    • 感谢您的回答。我发现我的网络地图配置版本是 V3,所以它不能默认签名约束。然后我尝试使用 V4 就可以了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多