#threshold-signature #signature-scheme #schnorr-signature #frost

bin+lib wtfrost

基于 FROST 的加权阈值实现,FROST 是一种 Schnorr 聚合阈值签名方案

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密码学

Download history 19/week @ 2024-04-02 88/week @ 2024-04-23

每月521 次下载

Apache-2.0

68KB
1.5K SLoC

WTFROST

ci crates.io

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