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
每月下载量 3,639
用于 3 个crate(通过 tari_crypto)
1MB
3K SLoC
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-cryptography
的Bulletproofs实现以及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