卡尔达诺结算层启动器

概述

可执行文件 cardano-launcher 是启动卡尔达诺结算层的工具。它实际运行整个卡尔达诺结算层系统(即一个节点,一个钱包)并处理更新。要做到这一点,cardano-launcher 使用两个独立的工具:cardano-nodecardano-updater

有关可选项的详细信息,请查阅 cardano-launcher 的说明

场景

cardano-launcher 有两种工作场景:客户端场景和服务端场景。如果你在启动过程中用 --wallet 参数提供一个钱包(例如代达罗斯)路径,cardano-node 将在客户端场景下运行, 否则将在服务端场景下运行。

服务端场景

开始时,有两个步骤:

  1. 运行更新程序。
  2. 运行一个节点。

更新程序的工作如下所述

一个节点以一个单独的进程运行。之后,我们等待,直到节点停止。节点退出后,将检查其退出代码,如果等于 20,我们重新启动 launcher,否则我们退出。

在退出前日志会写入到日志文件。要做到这一点,我们在启动时必须提供两个额外的参数:--report-server--node-log。第一个参数定义了收集日志的 URl,第二个参数定义了日志文件的路径。我们将日志异步发送到收集日志服务器。请注意 --node-log 参数中的文件必须存在。

客户端场景

当进程开始时,有三个步骤:

  1. 运行更新程序。
  2. 运行一个节点。
  3. 运行一个钱包。

对于步骤1和2,请参与上面的服务器场景

钱包作为一个独立进程运行

之后,我们等待节点或钱包停止。当它停止时,我们会检查它:

  1. 如果节点退出了,我们写一条日志(见上面服务端场景的解释),然后等待钱包退出
  2. 如果钱包退出,我们会检查其退出代码,如果它等于 20,我们杀死这个节点重新启动客户端场景的启动程序。请注意,不会立即杀死这个节点;节点在一定的超时过后才会被终止,其值从上述的 --node-timeout 参数获得。
  3. 如果钱包退出并且退出码不等于 20,我们立即杀死节点。

更新器

cardano-launcher 另一个非常重要的作用是更新节点。两种场景的公共步骤是运行更新程序

核心思想非常简单。节点更新是一个特殊的 .tar 存档:它表明节点的旧(当前)版本和新版本之间的区别。这个归档的路径通过 --update-archive 参数获得。 因此,cardano-launcher 将该归档应用到该节点,并且在重新启动后可以使用该节点的新版本。

请注意,当我们的 cardano-launcher 在客户端场景下运行时,钱包的用户能够看到更新已经准备就绪,并且有两种可能的情况。

如果用户同意采用这次更新,钱包立即以退出码 20 退出。在这种情况下,如上所述,启动器重新启动节点并更新应用。

如果用户不同意采用这次更新,钱包将继续工作,当时,当它重新启动(早晚的事情),这个更新被应用

重要:更新器同步运行,我们启动它,然后等待它完成,如果更新程序成功运行,.tar 文件将被删除。

实现概述

有关卡尔达诺结算层更新系统的更多实现细节,请参阅这一章