15 个版本 (8 个重大变更)

9.1.0 2024 年 5 月 21 日
9.0.0 2024 年 3 月 25 日
8.1.0 2024 年 2 月 15 日
7.0.0 2024 年 1 月 19 日
1.2.0 2023 年 6 月 2 日

#111 in 密码学

Download history 736/week @ 2024-04-20 737/week @ 2024-04-27 1078/week @ 2024-05-04 1142/week @ 2024-05-11 599/week @ 2024-05-18 519/week @ 2024-05-25 1071/week @ 2024-06-01 717/week @ 2024-06-08 670/week @ 2024-06-15 1003/week @ 2024-06-22 605/week @ 2024-06-29 1125/week @ 2024-07-06 982/week @ 2024-07-13 798/week @ 2024-07-20 706/week @ 2024-07-27 826/week @ 2024-08-03

3,645 次每月下载
用于 10 个crate (3 个直接使用)

Apache-2.0

345KB
7.5K SLoC

WSTS

ci crates.io

WSTS 是一个创建 加权 Schnorr 阈值签名 的系统,也称为 WileyProofs。它允许一组 签名者(每个签名者控制一组 密钥),只要其中 T(阈值)的签名者诚实地完成协议,就可以生成一个有效的 Schnorr 签名。尽管有许多其他阈值签名方案,但 WSTS 有几个特性使其在加密货币环境中特别有用。

首先,它针对没有拜占庭演员的情况下的少量轮次进行优化。由于协议允许检测系统中的任何恶意演员,因此优化没有恶意演员的情况是有意义的。可以通过严重惩罚的方式制裁这些拜占庭演员,以极大地阻止篡改协议的企图。

其次,与典型的 multisig 协议相比,WSTS 生成一个单个的聚合签名,该签名与标准的 Schnorr 签名不可区分。关键的是,该签名可以像任何 Schnorr 签名一样进行验证。由于签名是聚合的,它不会比任何其他标准签名在链上占用更多空间,并且比传统的 multisig 签名线性减少空间。

最后,WSTS 被设计用来构建加权阈值签名,即不是所有签名者都控制相同数量的密钥。阈值是密钥的函数,因此一组签名者只有在他们控制的密钥数量之和等于或超过阈值时才满足阈值。

背景

WSTS 基于以下链接的 FROST,即 Flexible Round-Optimized Schnorr Threshold 签名。 FROST 提供了一个系统,其中多个 parties(参与者),每个参与者控制一个 key(密钥),可以形成一个聚合组签名密钥,之后其中一定数量的 threshold(阈值)参与者可以合作形成一个有效的 Schnorr 签名。

变体

该软件包在 v1 模块中提供了 WSTS 的简单实现,这是 FROST 的一种扩展,其中每个 signer(签名者)控制一组 parties(参与者),每个参与者控制一个 key(密钥)。

该软件包还包括在 v2 模块中针对加权阈值场景优化的 WSTS 的更复杂版本。与原始的 FROST 类似,v2 为每个 Party(参与者)保留一个多项式和一个nonce(随机数),但允许每个 Party 控制多个密钥。这允许在协议的分布式密钥生成(DKG)和签名部分的数据大小和消息数量上实现数量级的减少。

p256k1

该软件包使用比特币的 secp256k1 曲线。但由于 C 的 libsecp256k1 库只为 Bitcoin 提供了用于操作的通用接口,因此有必要直接公开标量和曲线点以允许在签/验之外进行任意数学运算。因此,我们提供了一个围绕 libsecp256k1 的包装器软件包,该软件包封装了内部接口到标量和点。我们将此软件包命名为 p256k1,以表明它不仅与 secp256k1 具有相同的曲线,而且还直接公开了曲线。

文档

依赖关系

~17MB
~250K SLoC