如何在 corda 生产环境中将合同约束类型更改为签名约束
How can I change types of Contract Constraints to Signature constraint in corda production env
当我更新 corda 合约应用程序时出现错误
java.lang.IllegalArgumentException: An attachment has been explicitly set for contract com.fna.contracts.contract.InvoiceContract in the transaction builder which conflicts with the HashConstraint of a state.
关于保险库中的数据,我发现合同类型是“HashAttachmentConstraint”。但在开发环境中是“签名约束”。我可以在生产环境中将 HashAttachmentConstraint 更改为签名约束吗
enter image description here
看图,很明显你有一些状态使用了HashConstraint。我建议您按照以下步骤执行 HashConstraint States 到 Signature Constraint 的迁移。
- 停止你的节点。
- 在罐子上签名。要对 jar 进行外部签名,请使用 jarsigner。默认情况下,如果您不禁用 Corda 版本 4 中的签名,则在您 运行 deployNodes 任务时对 jar 进行签名。
- 用这个新签名的 jar 替换旧的 jar。
- 通过禁用散列约束来启动节点,将Java系统属性设置为-Dnet.corda.node.disableHashConstraints=”true”。
- 启动节点。
- 运行一个流,消耗旧的Hash约束状态,发布新的签名约束状态。您应该会看到使用签名约束的新状态。
您可以参考执行此操作的示例 here。
查看 this 博客以了解有关此主题的更多信息。
最后,您还可以看一下 video,其中显示了如何执行相同的操作。
您也可以在 docs 中找到有关合同迁移的更多信息。
当我更新 corda 合约应用程序时出现错误
java.lang.IllegalArgumentException: An attachment has been explicitly set for contract com.fna.contracts.contract.InvoiceContract in the transaction builder which conflicts with the HashConstraint of a state.
关于保险库中的数据,我发现合同类型是“HashAttachmentConstraint”。但在开发环境中是“签名约束”。我可以在生产环境中将 HashAttachmentConstraint 更改为签名约束吗
enter image description here
看图,很明显你有一些状态使用了HashConstraint。我建议您按照以下步骤执行 HashConstraint States 到 Signature Constraint 的迁移。
- 停止你的节点。
- 在罐子上签名。要对 jar 进行外部签名,请使用 jarsigner。默认情况下,如果您不禁用 Corda 版本 4 中的签名,则在您 运行 deployNodes 任务时对 jar 进行签名。
- 用这个新签名的 jar 替换旧的 jar。
- 通过禁用散列约束来启动节点,将Java系统属性设置为-Dnet.corda.node.disableHashConstraints=”true”。
- 启动节点。
- 运行一个流,消耗旧的Hash约束状态,发布新的签名约束状态。您应该会看到使用签名约束的新状态。
您可以参考执行此操作的示例 here。
查看 this 博客以了解有关此主题的更多信息。
最后,您还可以看一下 video,其中显示了如何执行相同的操作。
您也可以在 docs 中找到有关合同迁移的更多信息。