部署 TSS Node
TSS Node 支持三种部署方式,分别是基于 SGX 服务器进行部署、基于通用服务器,和基于 Apple MacBook 电脑进行部署。三者的对比请参考 【TSS Node 使用指南】中的【部署方式对比】。
本节描述的是基于通用服务器的 TSS Node 部署方式。如果客户计划基于 SGX 服务器或 Apple MacBook 电脑进行 TSS Node 的部署,请参考 【TSS Node 使用指南】中的相关章节。
准备服务器环境
系统最低配置
CPU:x86(64位)或者 ARM(64位)架构,2 核心,主频 2.5 GHz
内存:4 G
硬盘:64 G SSD
操作系统:Ubuntu Server 20.04 LTS 或最新
系统推荐配置
CPU:x86(64位)或者 ARM(64位)架构,4 核心,主频 3.0 GHz
内存:8 G
硬盘:128 G SSD
操作系统:Ubuntu Server 20.04 LTS 或最新
网络需求
不需要任何入站连接
安装(或升级)阶段:
访问系统配置的 apt 源,以安装必要的依赖包
访问 docker 安装源,以安装 docker
访问 docker.io registry 镜像仓库
对于 SGX 版本,访问 intel 网站以下载驱动程序
服务运行阶段:
Development 开发环境:访问 ws.tss.dev.cobo.com 的 443 端口
Production 正式环境:访问 ws.tss.cobo.com 的 443 端口
访问客户配置的 Callback 回调服务器
权限要求
有 sudo 权限的账号
获取和安装 TSS Node 软件包
联系 Cobo 销售专员获取通用服务器部署对应的软件包,如下:
cobo-tss-node-generic-<VERSION>.tgz (软件包)
cobo-tss-node-generic-<VERSION>.tgz.sha256(软件包哈希文件)
请先校验软件包是否正确,计算软件包 SHA256SUM 值:
sha256sum cobo-tss-node-generic-<VERSION>.tgz
确认与软件包哈希文件中的值一致。示例:
$ cat cobo-tss-node-generic-<VERSION>.tgz.sha256
7e2ba53dfc79458ab30b8e8ce8278e2fd93932e10bb6af725b0beb055965d1f2 cobo-tss-node-generic-<VERSION>.tgz
$ sha256sum cobo-tss-node-generic-<VERSION>.tgz
7e2ba53dfc79458ab30b8e8ce8278e2fd93932e10bb6af725b0beb055965d1f2 cobo-tss-node-generic-<VERSION>.tgz
校验正确后,使用下面的命令解压软件包。
tar -xzf cobo-tss-node-generic-<VERSION>.tgz
TSS Node 软件压缩包解压的目录结构:
cobo-tss-node-generic
├── configs
│ └── cobo-tss-node-config.yaml.template (默认配置文件模板)
└── tss-node.sh (启动脚本)
如果需要修改配置,客户需在 configs 目录下,手动复制文件 cobo-tss-node-config.yaml.template ,并重命名为 cobo-tss-node-config.yaml ,编辑需要修改的配置项。更多配置项定义,请参考 【TSS Node 使用指南】中的【TSS Node 配置方式说明】章节。
如无特殊说明,本文后续全部命令,都在 TSS Node 解压后的根路径下执行,例如 cobo-tss-node-generic 路径。
接下来,请执行下面命令,检查系统各项依赖的软件或驱动是否已经准备就绪。同时,如果是首次安装,会自动拉取最新的 TSS Node 容器镜像。
sudo ./tss-node.sh status
示例:
$ sudo ./tss-node.sh status
[sudo] password for ubuntu: (ubuntu账户密码)
Checking docker engine ... OK, version: 20.10.22
Checking container image ... Image not found: coboglobal/tss-node:v0.3.0
Going to pull container image coboglobal/tss-node:v0.3.0 ...
Login Succeeded
v0.3.0: Pulling from coboglobal/tss-node
4e7e0215f4ad: Pull complete
7fd35d9d7f31: Pull complete
86c277e0f34d: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:9dd6c67522b6f36df61e2a945d6093683fd4c980e5e15d3bcdd661ca8e062578
Status: Downloaded newer image for coboglobal/tss-node:v0.3.0
docker.io/coboglobal/tss-node:v0.3.0
Checking container image ... OK, id: sha256:8ab0c7353f5b62cdff5bdc6d9a436f0d99079d404b080aa6a61f594fe6446ba8
Checking TSS-node daemon ... not running
Please use './tss-node.sh start' to start the daemon.
Please use './tss-node.sh init' if the tss-node is not initialized yet.
至此,TSS Node 软件包及所有依赖已经准备就绪。
初始化 TSS Node
请在命令行内执行如下命令:
sudo ./tss-node.sh init
示例:
$ sudo ./tss-node.sh init
[sudo] password for ubuntu: (ubuntu账户密码)
Type password (at least 16 characters): (设置密码)
Retype password: (再次设置密码)
INFO[2023-01-13T05:12:04Z] Initialize database: db/secrets.db
INFO[2023-01-13T05:12:04Z] Initialize Node ID: cobo73VA6C6WvofPg8tWYmqvdUF1cPYhd7EmGUxTexz5HCzYe
INFO[2023-01-13T05:12:04Z] Generate callback public key:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomg0FRc8qm/vdNnjBDBv
DzKK7cZeeoRFAw2xcuaKWyCRHazERYAmICWG+q6dGZ8eS0C8AUqeqf23LlY3gDtr
KSkCvW/r78nkDgg+LH3rK3S0wdOfNFO21D3d3iKlOf6tLVvywfLsza7zwCx5dIKg
v+Z8ZEsy0/Qo4chS6OYAQntu8CYitzdVoDdm0pXxBFy4woKy7nkJZEMhAe/8nXDQ
Y6Xk1s3U/NT+q/zP3/3PVzu4ALnAEAA5jLV20cAiEPyrN0vZGPP4/rgpEfOlDEVp
jSGfW+Tui7RhmLZQhq9iQyaZlXCojbTuZJkjwjCGsd/T3UjT4FR3Kiofsf3i4RVR
TQIDAQAB
-----END PUBLIC KEY-----
INFO[2023-01-13T05:12:04Z] Start to initialize TSS parameters; the process may take several minutes
INFO[2023-01-13T05:12:11Z] Complete initialization of TSS parameters
INFO[2023-01-13T05:12:11Z] Complete initialization of TSS Node keys and data
注意事项:
首次初始化时,会检测 docker 是否安装,并构建容器镜像。如果没有安装 docker,脚本会提示您是否自动安装。
初始化过程中需要设置密码,用于对生成的机密数据进行加密,此后的其他操作均需要输入此密码才能解密数据。密码设置后如需修改,或者密码丢失,需用灾难恢复流程。请将密码备份保存在安全的设备中,并严格控制此密码的访问权限。推荐使用密码管理软件(例如 1Password)生成复杂密码,长度建议在16~32位。
初始化过程中会打印本 TSS Node 的 Node ID,即为一串以 cobo 开头的数字和字母组成的标识。它是 TSS Node 的唯一标识。客户后续在 Cobo Custody Web 上进行 TSS Node 绑定时需要使用此 ID。例如上面示例中的 cobo73VA6C6WvofPg8tWYmqvdUF1cPYhd7EmGUxTexz5HCzYe.
启动 TSS Node
请在命令行内执行如下命令:
sudo ./tss-node.sh start
示例:
$ sudo ./tss-node.sh start
Container started: 4d33d31066279927bd0f9e283aa60454ac02a040a6f49e684ee372321bd41065
Wait a few seconds ..
Type password: (输入密码)
cobo-tss-node
Version: v0.3.0
Build mode: prod
Git commit: 45431a4b3d4ad8ddf4a52aab619f41353310f0ba
Build time: 20230112T111204
INFO[2023-01-13T05:13:32Z] Waiting for password input on HTTP endpoint.
Embedded Risk Control Rule:
|__ Enable: false
INFO[2023-01-13T05:15:09Z] TSS Node ID: cobo73VA6C6WvofPg8tWYmqvdUF1cPYhd7EmGUxTexz5HCzYe
INFO[2023-01-13T05:15:09Z] WebSocket connecting to wss://ws.tss.dev.cobo.com/ws
INFO[2023-01-13T05:15:10Z] Start to register service
TSS Node 未在 Cobo Custody Web 绑定前,会提示注册失败。请先继续执行后续章节的操作。在 Cobo Custody Web 完成 TSS Node 绑定后,TSS Node 会通过自动重试,完成注册,如下所示:
INFO[2022-11-18T10:13:38+08:00] TSS Node registration accepted
按 Ctrl+C 退出后,TSS Node 会保持在后台执行。
使用下面命令查看运行状态:
sudo ./tss-node.sh status
使用下面命令查看运行容器日志:
sudo ./tss-node.sh log
同样,按 Ctrl+C 退出后,TSS Node 会继续保持在后台执行。
可以使用下面的命令停止 TSS Node:
sudo ./tss-node.sh stop
绑定 TSS Node 和生成根扩展公钥
企业账户内具有管理员(Admin)权限的用户在登录 Cobo Custody Web 后, 可以在【设置】-【MPC TSS Node】页面完成 TSS Node 的绑定。此时,需要所有 MPC 参与方的 TSS Node 同时在线。绑定 TSS Node 成功后,所有 MPC 参与方会协作完成一次分布式密钥生成运算,算法执行成功后,各个 MPC 参与方会在本地生成一个私钥分片,并由此确定了本企业账户的 MPC 根扩展公钥(MPC Root Extended Public Key),后续该企业账户下的所有钱包地址均由此根扩展公钥通过 BIP32 协议进行派生。
TSS Node 回调机制等更多配置
本节简要描述了使用 TSS Node 的基础操作,此外,TSS Node 还通过回调(Callback)的方式提供了可定制化的风控能力。强烈建议客户在正式环境下启用 TSS Node 的回调机制,用于对每次使用私钥分片的请求进行风控检查。
关于 TSS Node 使用的更多信息,请参考【TSS Node 使用指南】。
私钥分片的管理
私钥分片生成后,会加密保存在 TSS Node 本地的数据库文件中,默认路径为db/secrets.db。建议客户将该数据库文件与初始化 TSS Node 时设置的密码备份到不同地方,并合理分配该数据库文件与对应密码的访问权限。
关于私钥分片管理的更多信息,请参考【私钥分片管理指南】。
Last updated
Was this helpful?