MPC-TSS 协议概述
支持的密码学签名算法
SMN 开发套件支持以下签名算法的 MPC-TSS 协议:
Primitive | Implemented Protocol | Supported Curves | Supported Threshold |
---|---|---|---|
ECDSA | CMP | Secp256k1 | 2/2、2/3、3/3、3/5 |
EdDSA | Lin22 | Ed25519 | 2/2、2/3、3/3、3/5 |
Schnorr | Lin22 | Secp256k1 | 2/2、2/3、3/3、3/5 |
后续版本将会增加 ECDSA 签名算法对 Secp256r1 和 STARK 曲线的支持,以及更灵活的签名门限。
不同签名算法支持的公链:
Primitive | Curves | Supported Blockchains |
---|---|---|
ECDSA | Secp256k1 | EVM、Bitcoin、TRON、Filecoin、Dash、Bitcoin Cash、Dogecoin、Polkadot and others |
EdDSA | Ed25519 | NEAR、Sui、Aptos、Solana、Ripple、Stellar and others |
Schnorr | Secp256k1 | Bitcoin、Bitcoin Cash、Bitcoin SV、Dogecoin and others |
支持的 MPC-TSS 子协议
SMN 开发套件支持以下 MPC 子协议以满足开发者不同的业务场景。为了方便介绍,我们以 2/2 场景为例进行说明。
分布式私钥生成

该协议适用于钱包创建场景,各方各自通过 Distributed key generation protocol(DKG) 协议后生成本地私钥分片,整个过程中原始私钥不出现。可以理解为每方 DKG 协议的输入是本地生成的随机数,DKG 协议运行完成后输出是私钥分片,各方仅可以获得各自的私钥分片,私钥分片可以用于分布式签名协议等。
分布式私钥签名

该协议适用于交易签名场景。各方通过运行分布式私钥签名协议后,生成对消息的签名,每一方都可以得到签名结果,整个过程中原始私钥不出现。可以理解为每方分布式私钥签名协议的输入是本地的私钥分片、要签名的消息,输出是签名结果。
支持派生的分布式私钥签名

该协议适用于 HD 钱包交易签名场景。在单私钥签名体系中,可以根据种子密钥按照指定的路径派生出子私钥,使用子私钥进行签名,好处在于只需要备份和管理种子密钥,通过派生机制就可以管理无数个子私钥。在 MPC 协议中可以实现类似的派生逻辑,在分布式私钥签名协议中增加派生功能后,可以理解为一组私钥分片可以管理无数个子私钥分片。那么分布式私钥签名协议的输入就变成了本地私钥分片、子私钥分片派生路径、要签名的消息,输出还是签名结果保持不变。
分布式私钥分片刷新

该协议适用于钱包私钥分片安全刷新场景。老的一组私钥分片通过私钥分片刷新协议可以得到一组新的私钥分片。协议的输入是每一方各自的私钥分片,输出是新的私钥分片。需要注意,老的私钥分片依然可用,开发者需要根据自己的业务场景,决定是否禁用老的私钥分片。
分布式私钥分片恢复

该协议适用于 2/3 门限的 MPC 钱包,丢失/舍弃一方私钥分片时,恢复私钥分片的场景。2/3 门限中,3 个私钥分片,丢失其中一个私钥分片,可以通过分布式私钥分片恢复协议找回丢失的那一片。输入是存在的两片,输出是一组新的三个私钥分片。需要注意,老的私钥分片 A 和 B 依然可用,开发者需要根据自己的业务场景,决定是否禁用老的私钥分片。
总结
SMN 产品套件通过提供底层 MPC-TSS 协议功能帮助开发者快速构建上层应用而无需关注密码学细节。开发者可以通过业务场景使用不同的 MPC 协议完成业务构建。