在跨网络部署 Corda 节点时,哪些 JAR 必须完全相同?

Posted

技术标签:

【中文标题】在跨网络部署 Corda 节点时,哪些 JAR 必须完全相同?【英文标题】:When deploying Corda nodes across the network, which JARs have to be exactly the same? 【发布时间】:2017-12-19 10:54:07 【问题描述】:

关于 Corda 部署的几个问题:

    在部署时,所有 Corda 节点中的所有 JAR 文件是否必须完全相同 - 相同的构建、相同的版本、相同的哈希等。?这是否意味着各方必须事先就相同的代码库达成一致?

    如何实现自己节点的逻辑变体?是否可以只共享包含流接口的 JAR 并有不同的 JAR 用于实现?我们可以根据需要将JAR放到插件目录中而不与其他节点同步吗?

    首次部署和后续代码 (JAR) 更新如何为单个节点工作?请解释典型的部署步骤。

我已经阅读了文档,但对实际的生产部署场景仍然不是很清楚。

【问题讨论】:

【参考方案1】:

对于 1. 和 2.: 见 https://docs.corda.net/writing-a-cordapp.html#structure。包含状态和合约代码的 JAR 在参与者之间必须是相同的,因为每个人都必须就账本上达成的共识以及给定的账本更新是否有效达成共识。但是,流逻辑可能因节点而异。因此,CorDapps 应该被拆分成几个 JAR - 一些将在节点之间共享且相同(合同和状态定义),而另一些则不同(流定义,可能还有其他支持类)

对于 3.: 以下是有关部署节点的说明:https://docs.corda.net/deploying-a-node.html

【讨论】:

以上是关于在跨网络部署 Corda 节点时,哪些 JAR 必须完全相同?的主要内容,如果未能解决你的问题,请参考以下文章

在corda上更换网络地图和公证人时出错

Corda Network-Map 已启动并运行,但 Notary 不在白名单中

如何为在 docker 容器内运行的 corda 节点运行迁移脚本?

将部署升级到 corda 版本 3.1-corda

查看JAR文件的内容

在 Corda 中使用 TestContainers 进行 API 测试