5 个版本 (3 个主要变更)
4.0.0 | 2023年4月3日 |
---|---|
3.0.0 | 2023年2月27日 |
2.0.0 | 2023年2月15日 |
1.0.1 | 2023年2月13日 |
1.0.0 | 2023年2月9日 |
#2072 在 密码学
每月521 次下载
68KB
1.5K SLoC
WTFROST
FROST
是一个实现 Flexible Round Optimized Schnorr Threshold
签名的系统。它允许 N
个各方,每个各方控制一个密钥,只要 T
(阈值)中的各方诚实地完成协议,就可以创建有效的 Schnorr
签名。虽然有许多其他阈值签名方案,但 FROST
具有一些特性,使其在加密货币环境中特别有用。
首先,它针对没有拜占庭演员的常见情况,优化了少量回合。由于该协议允许检测系统中的任何恶意演员,因此对没有恶意演员的情况进行优化是有意义的。可以通过对恶意演员进行处罚,严重阻止破坏协议的企图。
其次,与典型的 multisig
协议相比,FROST
产生一个单一的聚合签名,该签名与标准的 Schnorr
签名无法区分。关键的是,此签名可以像任何 Schnorr
签名一样进行验证。由于签名是聚合的,因此它不会比任何其他标准签名占用更多的链上空间,并且比传统的 multisig
签名线性更少。
变体
此 crate 在 v1
模块中提供了 FROST
的纯实现,其中每个 Party
控制一个密钥。 v1
还包含将多个各方包装到单个 Signer
对象中的代码。这允许 FROST
不仅作为阈值方案,还作为加权阈值方案运行。每个 Signer
被分配一组 key_ids
,并作为协议中所有包装的各方行事。因此,在类似 PoS
风格的系统中,其中不同演员的权力与其赌注的大小成正比,每个 v1::Signer
都将能够根据其控制的密钥数量按比例投票。
这个包还包含一个针对 FROST
的优化版本,用于在 v2
模块中的加权阈值场景。我们称之为 WTF
,或 Weighted Threshold FROST
。与普通 FROST
类似,WTF
为每个 Party
保持一个多项式和一个nonce,但允许每个 Party
控制多个密钥。这可以在协议的分布式密钥生成(DKG
)和签名部分中实现数据大小和消息数量的数量级减少。
p256k1
这个包使用 Bitcoin 的 secp256k1
曲线。但由于 C 的 libsecp256k1
库只为 Bitcoin 提供了高级接口,所以需要直接公开标量和曲线点,以便在签/验之外执行任意数学运算。因此,我们提供了一个围绕 libsecp256k1
的包装器包,它封装了标量和点的内部接口。我们将这个包称为 p256k1
,以表明它不仅与 secp256k1
具有相同的曲线,而且还直接公开了曲线。
文档
如何使用 CLI 下载 WTF 论文
- 列出最近的 CI 运行并获取最新的运行 ID
gh run list -R Trust-Machines/frost
- 下载 wtf.pdf 艺术品
gh run download 4246650808 -R Trust-Machines/frost -n wtf.pdf
依赖项
~8–12MB
~185K SLoC