wallet-mpc-tss

command module
v0.0.0-...-099e6dc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2026 License: MIT Imports: 3 Imported by: 0

README

wallet-mpc-tss

基于 TSS(门限签名)的 MPC 钱包服务:支持 ECDSA (t,n) 门限密钥生成与签名,服务端仅做协调与加密转发,不接触密钥与 TSS 明文。

  • 模块路径github.com/godaddy-x/wallet-mpc-tss

概述

  • 服务端(CLI/Web):提供 HTTP API(创建/解锁钱包、MPC 密钥生成、交易单签名等),协调 Keygen/Sign 任务,按 Subject 转发节点间 ML-KEM-1024 加密消息,不存储 TSS SaveData。
  • 节点(node):连接 App WebSocket(ML-DSA-87 认证),运行 Alice CGGMP DKG/Refresh/Sign;MPC 消息 ML-KEM-1024 加密转发;shard 本地落盘(-keysdir)。
  • 钱包与类型:交易单、账户等类型使用 wallet-adapter;CLI/Node 协议 DTO 在 dto/;OPS 客户端 SDK 见 wallet-api-go
密码学分层
层级 算法 说明
WS 登录 ML-DSA-87 节点 Plan2 认证
WS 传输 AES 已登录连接 Body 外层加密
MPC 交互 ML-KEM-1024 临时公钥、Start、协议 WireBytes
TSS / 链上 ECDSA secp256k1 CGGMP 门限签名;链上验签 mpc/ecdsa

部署:MPC 交互协议使用 ML-KEM-1024(eccrypto 协议 0x04),cli 与全部 node 须同版本

MPC 全流程总览docs/MPC_FLOW.md。Keygen/Sign 细节见 MPC_KEYGEN_SIGN_FLOW.md;HD 派生见 docs/MPC_HD_DERIVATION.md

ML-DSA 全链后量子路线(SSS + HSM 瞬态重组,与当前 TSS 方案独立)见 ML_DSA_SSS_SIGN_DESIGN.md

目录结构

.
├── main.go              # CLI 入口:加载配置、启动交互式控制台
├── app/                 # 服务端:配置、HTTP 路由、CLI 业务、MPC 协调与收集
├── node/                # MPC 节点入口:WebSocket、Keygen/Sign 处理
├── dto/                 # CLI / Node WebSocket 协议 DTO
├── mpc/                 # CGGMP + HD + 验签
│   ├── algorithm.go
│   ├── alg_ecdsa/       # DKG / Refresh / Sign (CGGMP)
│   ├── hd/              # wallet / account / address 派生
│   └── ecdsa/           # VerifySignatureHex
├── docs/MPC_FLOW.md     # ★ MPC 全流程总览
├── cli_config.yaml
├── MPC_KEYGEN_SIGN_FLOW.md
├── MPC_SIGN_MEMORY_TEST.md   # 连续 Sign 压测与内存验收
└── ML_DSA_SSS_SIGN_DESIGN.md # ML-DSA + SSS + HSM 分布式签名方案(过渡设计)

构建与运行

环境要求
  • Go 1.26+
  • 已配置的 Go 模块环境
构建
go build -o cli .
go build -o node ./node
服务端(CLI)
# 生成默认配置示例
./cli -init
# 使用指定配置启动(日志文件:配置名_log.log)
./cli -config=cli_config.yaml
MPC 节点

每个节点使用独立配置(如 cli_node0.json),包含服务端域名、WebSocket 地址、ML-DSA 认证等:

./node -config=cli_node0.json
# 可选:指定 SaveData 本地存储目录(默认 keys)
./node -config=cli_node0.json -keysdir=./data/shards

配置说明

  • cli_config.yaml:服务端端口、JWT、GC、extract(walletDir、walletMode、各白名单/黑名单等)。
  • walletMode:仅支持 MPC 模式,3=2-of-3(3 节点)、5=3-of-5(5 节点),需部署对应数量节点。
  • walletDirextract.walletDir / env MPC_CLI_WALLET_DIR):CLI KeyMeta,{walletDir}/{appID}/{walletID}.json
  • shardKeysDirnode/cli_nodeN.json / -keysdir):节点 MPC 分片 {keyID}-nodeN.json

依赖(import 路径)

本地开发可将 github.com/godaddy-x/wallet-adaptergo.mod 中 replace 到本地路径。

许可证

GPL-3.0

Documentation

Overview

程序入口:加载配置并启动 MPC 钱包 CLI 交互式控制台。 支持 -config 指定配置文件。

Directories

Path Synopsis
app
本文件:CliService 实现(解锁/创建钱包、登录、创建账户/地址、交易单签名与 MPC 协调等)。
本文件:CliService 实现(解锁/创建钱包、登录、创建账户/地址、交易单签名与 MPC 协调等)。
txvalidate
Package txvalidate 签前待签交易校验流水线(tradeSign → 反序列化 → 策略 → 链 message 复现)。
Package txvalidate 签前待签交易校验流水线(tradeSign → 反序列化 → 策略 → 链 message 复现)。
Package sdkconfig 为 walletapi / MPC 节点共用的连接配置(ops.json、cli.json、cli_node*.json)。
Package sdkconfig 为 walletapi / MPC 节点共用的连接配置(ops.json、cli.json、cli_node*.json)。
Package dto 定义钱包 API 与 CLI 使用的请求/响应及 MPC 相关数据结构(easyjson 生成代码在 *_easyjson.go)。
Package dto 定义钱包 API 与 CLI 使用的请求/响应及 MPC 相关数据结构(easyjson 生成代码在 *_easyjson.go)。
mpc
Package mpc 提供 MPC 多算法支持的公共类型与常量。
Package mpc 提供 MPC 多算法支持的公共类型与常量。
alg_ecdsa
Package alg_ecdsa ?? getamis/alice CGGMP ? ECDSA (t,n) ?????
Package alg_ecdsa ?? getamis/alice CGGMP ? ECDSA (t,n) ?????
alg_ed25519
Package alg_ed25519 基于 getamis/alice FROST 的 Ed25519 (t,n) 门限签名。
Package alg_ed25519 基于 getamis/alice FROST 的 Ed25519 (t,n) 门限签名。
ecdsa
Package ecdsa 提供链上 ECDSA 验签工具(与 CGGMP 签名输出格式一致)。
Package ecdsa 提供链上 ECDSA 验签工具(与 CGGMP 签名输出格式一致)。
ed25519
Package ed25519 提供链上 Ed25519 验签与 FROST 签名编码。
Package ed25519 提供链上 Ed25519 验签与 FROST 签名编码。
hd
Package hd 提供 MPC 钱包的公钥 HD 派生(无 seed、仅非硬化路径),与 TSS 库无关。
Package hd 提供 MPC 钱包的公钥 HD 派生(无 seed、仅非硬化路径),与 TSS 库无关。
keystore
Package keystore 提供 MPC 分片文件 at-rest 加密封装(K3)。
Package keystore 提供 MPC 分片文件 at-rest 加密封装(K3)。
节点部署配置:JSON 读取 + TEE env 注入(node 专属,不进入 sdkconfig / walletapi)。
节点部署配置:JSON 读取 + TEE env 注入(node 专属,不进入 sdkconfig / walletapi)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL