Skip to main content
即刻安装 Cobo WaaS Skill,在 Claude Code、Cursor 等 AI 开发环境中使用自然语言集成 WaaS API,显著提升开发效率 🚀
本文提供了有关如何部署服务端签名人的分步指南,涵盖了 TSS Node 包的安装以及 TSS Node 的初始化和启动。

前提条件

在部署服务端签名人之前,请确保您的环境符合我们的网络和服务器要求。有关详细信息,请参阅:

安装 TSS Node 包

首先,在您的服务器上安装 TSS Node 包。

获取 TSS Node 包

TSS Node 包有两个版本,适用于不同的部署环境:
  • SGX 安全增强版:专为配备 SGX 功能的服务器设计。您可以在这里下载此 TSS Node 包,并在这里下载相应的 SHA256 文件。
  • 通用版:兼容所有服务器,包括云提供商的服务器、自建服务器、通用服务器和 Apple MacBooks。虽然此版本也可以在 SGX 准备好的服务器上运行,但 SGX 特定功能将不会启用。您可以在这里下载此 TSS Node 包,并在这里下载相应的 SHA256 文件。
以下示例使用通用版的 TSS Node 包。
cobo-tss-node-generic.tgz (TSS Node 文件)

cobo-tss-node-generic.tgz.sha256 (哈希文件)
要验证包的完整性:
  1. 从 SHA256 文件中显示预期的校验和:
cat cobo-tss-node-generic.tgz.sha256
  1. 将其与下载包的实际校验和进行比较。它们必须完全匹配:
sha256sum cobo-tss-node-generic.tgz
如果您使用的是 Apple MacBook,请改用 shasum -a 256
shasum -a 256 cobo-tss-node-generic.tgz
如果校验和不匹配,包可能在下载过程中被损坏或篡改。在这种情况下,请重新下载包。 验证包完整性后,请执行以下命令来解压 TSS Node 包。
tar -xzf cobo-tss-node-generic.tgz
解压 TSS Node 包后,将显示以下目录。
cobo-tss-node-generic

├── configs

│ └── cobo-tss-node-config.yaml.template (默认配置文件模板)

└── tss-node.sh (启动脚本)
除非另有说明,请在解压后的 TSS Node 包的根目录下执行所有后续命令。例如,在执行任何进一步命令之前,请导航到 cobo-tss-node-generic 路径。

TSS Node 命令行命令

TSS Node 命令行命令在所有部署环境中保持一致。但是,命令的执行可能会略有不同。对于 SGX 准备好的服务器和其他类型的服务器,sudo 访问是部署和运行 TSS Node 的必要条件。换句话说,请确保在命令中插入 sudo。
sudo ./tss-node.sh status
对于 Apple MacBook,不需要 sudo 访问。
./tss-node.sh status
除非另有说明,后续命令将使用通用服务器作为示例。 要了解有关 TSS Node 命令行命令的更多信息,请参阅 TSS Node 命令行命令

获取 TSS Node 容器镜像

请执行以下命令来验证必要依赖项和驱动程序的安装。如果这是 TSS Node 的初始配置,命令还将自动获取最新的容器镜像。
sudo ./tss-node.sh status
输出示例如下。
$ sudo ./tss-node.sh status

[sudo] password for ubuntu: (ubuntu 账户密码)

检查 docker 引擎 ... OK,版本:20.10.22

检查容器镜像 ... 未找到镜像:coboglobal/tss-node:v0.10.0

正在拉取容器镜像 coboglobal/tss-node:v0.10.0 …

登录成功

v0.10.0: 拉取中

4e7e0215f4ad: 拉取完成

7fd35d9d7f31: 拉取完成

86c277e0f34d: 拉取完成

4f4fb700ef54: 拉取完成

摘要:sha256:9dd6c67522b6f36df61e2a945d6093683fd4c980e5e15d3bcdd661ca8e062578

状态:下载了新的镜像 coboglobal/tss-node:v0.10.0

docker.io/coboglobal/tss-node:v0.10.0

检查容器镜像 ... OK,ID:sha256:8ab0c7353f5b62cdff5bdc6d9a436f0d99079d404b080aa6a61f594fe6446ba8

检查 TSS Node 守护进程 ... 未运行

请使用 './tss-node.sh start' 启动守护进程。

请使用 './tss-node.sh init' 如果 TSS Node 尚未初始化。
到目前为止,所有依赖项都已成功配置,TSS Node 已准备好初始化。

配置 TSS Node

默认配置文件是 configs/cobo-tss-node-config.yaml.template TSS Node 默认配置为连接到开发环境,因此不需要额外的配置文件即可运行。但是,如果您希望连接到生产环境,则需要手动修改配置文件。 要开始,请创建 cobo-tss-node-config.yaml.template 的副本,并将其重命名为 cobo-tss-node-config.yaml。将新文件粘贴到 configs 目录中。有关说明,请参阅 配置 TSS Node 。请记住,在修改配置文件后重新启动 TSS Node 包。

启动脚本

TSS Node 包包含一个启动脚本 tss-node.sh,用于:
  • 检查所需软件和驱动程序是否成功安装。
  • 拉取 TSS Node 容器镜像。
  • 管理容器的运行状态。
启动脚本将传递大多数命令和参数给容器内的 cobo-tss-node 程序。

初始化 TSS Node

请执行以下命令:
sudo ./tss-node.sh init
输出示例如下。
$ sudo ./tss-node.sh init

[sudo] password for ubuntu: (ubuntu 账户密码)

输入密码(至少 16 个字符):(输入密码)

重新输入密码:(重新输入密码)

INFO[2023-01-13T05:12:04Z] 初始化数据库:db/secrets.db

INFO[2023-01-13T05:12:04Z] 初始化节点 ID:cobo73VA6C6WvofPg8tWYmqvdUF1cPYhd7EmGUxTexz5HCzYe

INFO[2023-01-13T05:12:04Z] 生成回调公钥:

-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomg0FRc8qm/vdNnjBDBv

DzKK7cZeeoRFAw2xcuaKWyCRHazERYAmICWG+q6dGZ8eS0C8AUqeqf23LlY3gDtr

...

TQIDAQAB

-----END PUBLIC KEY-----

INFO[2023-01-13T05:12:04Z] 开始初始化 TSS 参数;此过程可能需要几分钟

INFO[2023-01-13T05:12:11Z] 完成初始化 TSS 参数

INFO[2023-01-13T05:12:11Z] 完成初始化 TSS Node 密钥和数据
执行工作流:
  • 在 TSS Node 初始化期间,系统将验证 Docker 引擎的成功安装,并继续构建容器镜像。您将被提示批准 Docker 引擎的自动安装。
  • 如果使用的是 SGX 准备好的服务器,系统还将验证 SGX 驱动程序的成功安装。您将被提示批准 Intel DCAP 1.41 驱动程序的自动安装。
  • 设置一个密码来加密在 TSS Node 初始化期间生成的数据。在丢失访问权限或需要修改密码的情况下,请参阅 从另一个活动持有者组恢复私钥分片。建议设置一个复杂的密码,长度在 16-32 个字符之间,使用密码管理器(例如 1Password),并在受信任的设备上安全存储密码。
  • 数据库文件将自动生成,默认路径为 db/secrets.db
  • 节点 ID 将自动生成(例如 cobo73VA6C6WvofPg8tWYmqvdUF1cPYhd7EmGUxTexz5HCzYe),并作为 TSS Node 的唯一标识符。
  • TSS Node Callback 私钥将自动生成,用于验证与 TSS Node Callback 服务器的通信,并打印出相应的公钥。

启动 TSS Node

执行以下命令来启动 TSS Node :
sudo ./tss-node.sh start
输出示例如下。
$ sudo ./tss-node.sh start

容器已启动:4d33d31066279927bd0f9e283aa60454ac02a040a6f49e684ee372321bd41065

等待几秒钟 ..

输入密码:(输入密码)

cobo-tss-node

版本:v0.10.0

构建模式:prod

Git 提交:45431a4b3d4ad8ddf4a52aab619f41353310f0ba

构建时间:20230112T111204

INFO[2023-01-13T05:13:32Z] 等待密码输入 HTTP 端点。

嵌入式风险控制规则:

|__ 启用:false

INFO[2023-01-13T05:15:09Z] TSS Node  ID:cobo73VA6C6WvofPg8tWYmqvdUF1cPYhd7EmGUxTexz5HCzYe

INFO[2023-01-13T05:15:09Z] WebSocket 连接到 wss://ws.tss.dev.cobo.com/ws

INFO[2023-01-13T05:15:10Z] 开始注册服务
此时,TSS Node 已准备好加入私钥分片持有者组。一旦您创建了一个持有者组,并将 TSS Node 添加到其中,您将在日志中看到成功注册的状态。

创建私钥分片持有者组

您现在可以继续创建持有者组,请参阅 通过 Cobo Portal 创建持有者组 创建持有者组后,注册状态将更新为以下内容:
INFO[2023-01-13T05:17:09Z] TSS Node 注册已接受
您可以按 Ctrl+C 退出,TSS Node 将继续在后台运行。有关检查 TSS Node 状态的更多信息,请参阅 TSS Node 命令

管理私钥分片

一旦您成功创建了一个持有者组,并将 TSS Node 添加到其中,生成的私钥分片将被加密并存储在 TSS Node 包的数据库文件中,默认路径为 db/secrets.db。强烈建议创建数据库文件和用于加密的密码的备份,并将备份文件存储在单独的设备上以增强安全性。有关更多信息,请参阅 备份您的私钥分片

导出运行指标

TSS Node 支持将服务器运行指标导出到您的 InfluxDB 数据库以进行性能监控。这些指标可以通过 Grafana 进行可视化。要配置指标导出,请参阅配置 TSS Node 部分。如需其他帮助,请通过 [email protected] 联系我们的支持团队。