#range-proof #bulletproofs #generator #commitment #aggregated #random #mask

无std tari_bulletproofs_plus

Bulletproofs的更小、更快的实现

4个版本 (2个破坏性版本)

0.4.0 2024年5月7日
0.3.2 2023年8月7日
0.3.1 2023年7月18日
0.2.3 2023年4月3日

#6 in #mask

Download history 916/week @ 2024-05-06 684/week @ 2024-05-13 865/week @ 2024-05-20 893/week @ 2024-05-27 729/week @ 2024-06-03 519/week @ 2024-06-10 782/week @ 2024-06-17 858/week @ 2024-06-24 914/week @ 2024-07-01 860/week @ 2024-07-08 667/week @ 2024-07-15 910/week @ 2024-07-22 811/week @ 2024-07-29 856/week @ 2024-08-05 950/week @ 2024-08-12 955/week @ 2024-08-19

每月下载量 3,639
用于 3 个crate(通过 tari_crypto

BSD-3-Clause

1MB
3K SLoC

Build Coverage Status

Tari Bulletproofs+

对Bulletproofs+范围证明系统的一种快速实现,可以进行有趣的操作。

特别是,它支持

  • 证明聚合。您可以通过高效的方式生成包含多个范围断言的证明。
  • 扩展承诺。承诺可以包含多个掩码。
  • 批量验证。验证多个证明非常快。
  • 最小值承诺。您可以证明承诺绑定到至少指定值。
  • 掩码提取。如果验证者和证明者同意一个共享秘密,验证者可以使用它来恢复非聚合证明中用于承诺的掩码。

dalek-cryptography更新分支的Bulletproofs实现相比,此Bulletproofs+实现是

  • 更小的。无论聚合因子如何,Bulletproofs+证明都要短96字节。
  • 生成证明更快。此实现生成非聚合的64位范围证明大约快10%,聚合证明的速度提升相似。
  • 验证单个证明更快。此实现验证单个64位范围证明大约快15%。
  • 验证聚合证明较慢。此实现验证聚合证明较慢。
  • 验证批量证明更快。由于此实现支持批量处理,其单个64位范围证明的边际验证时间可以降低到非批量时间的不到一半。

一如既往,您的里程可能不同。

此库在仓库历史的一个特定点由Quarkslab进行了代码审计。您可以在本仓库中阅读报告和问题回应

功能

当默认功能被禁用时,该库对#![no_std]友好的。

(默认的)rand功能通过OsRng随机数生成器增加了证明者和验证者的功能。如果它没有被启用,你必须提供自己的密码学安全的随机数生成器。

(默认的)std功能在依赖项中启用相应的功能。

测试

单元测试可以通过cargo test进行。基本的模糊测试可以通过cargo fuzz运行(在夜间工具链上)。

参考

此实现借鉴了dalek-cryptographyBulletproofs实现以及Monero的Bulletproofs+实现。

在此实现中使用的一些特性和优化在Tari RFC-0181中进行了描述。

所有原始源代码文件都带有

Copyright 2022 The Tari Project
SPDX-License-Identifier: BSD-3-Clause

所有重新使用或修改的dalek-cryptography源代码文件都带有

Copyright 2022 The Tari Project
SPDX-License-Identifier: BSD-3-Clause
  Modified from:
    Copyright (c) 2018 Chain, Inc.
    SPDX-License-Identifier: MIT

依赖项

~4.5–6MB
~102K SLoC