CordApp生命周期

时间:2018-10-31 09:47:21

标签: lifecycle corda

Corda是否有任何受支持的方式将CordApp的更改推广到所有具有较旧版本的节点?或者我将如何分发新的CordApp?

理想情况下,无需所有人(每个受影响的节点所有者)都可以做任何事情。

现在,这将意味着更新gradle,重建和重新启动节点中的依赖项,当我的节点属于许多业务网络的一部分时,这是非常不便的。

是否有任何计划类似于Web服务器,例如tomcat,可以在其中部署war文件?

1 个答案:

答案 0 :(得分:0)

首先,并非不需要运行deployNodes来创建新的CorDapp JAR。相反,您可以使用Gradle jar命令:

  • Unix / Mac OSX:./gradlew jar
  • Windows:gradlew.bat jar

这将在build/libs下创建新的CorDapp JAR。然后,通过将新的CorDapp JAR添加到将使用新的CorDapp的每个节点的cordapps文件夹中,来安装新的CorDapp。

从Corda 3开始,要拾取新的CorDapp,必须重新启动该节点(将来,我们希望Corda支持CorDapps的热重装)。这里有几个注意事项:

  • 如果要升级一个或多个现有流程:

  • 如果要升级一个或多个现有状态或合同:

    • 您需要同时在类路径上同时保留新旧状态和合同定义(例如IOUStateIOUStateV2
    • 状态和合同不必一次在每个节点上升级。如果向另一个节点发送没有定义的州或合同,您将只会遇到错误
    • 有关更多详细信息,请参见docs on upgrading contracts and states
  • 如果您对CorDapp的合同使用区域约束,则需要更新兼容区域的网络参数

    • 如果您使用哈希约束或Corda 4中引入的签名约束,则不需要此步骤