5 个不稳定版本
0.3.1 | 2024年6月28日 |
---|---|
0.3.0 |
|
0.2.0 | 2024年6月18日 |
0.2.0-beta | 2024年5月27日 |
0.1.0 | 2024年5月21日 |
#3 在 #匿名
每月下载量 41
47KB
814 行
Stealth Address Kit
Stealth Address Kit 利用 arkworks-rs 套件库提供了匿名地址的稳健实现。
支持的曲线
目前支持以下曲线
ark_bn254
ark_bls_12_381
ark_bls_12_377
secp256k1
secp256r1
pallas
vesta
bw6_761
baby_jub_jub
性能基准
请参阅性能基准,比较支持曲线之间的性能。
使用示例
以下是一个使用 Stealth Address Kit 与 ark_bn254
曲线示例
use stealth_address_kit::StealthAddressOnCurve;
use ark_bn254::Bn254;
fn main() {
let (spending_key, spending_public_key) = Bn254::random_keypair();
let (viewing_key, viewing_public_key) = Bn254::random_keypair();
// Generate ephemeral keypair
let (ephemeral_private_key, ephemeral_public_key) = Bn254::random_keypair();
let (stealth_address, view_tag) = Bn254::generate_stealth_address(viewing_public_key, spending_public_key, ephemeral_private_key);
let stealth_private_key_opt = Bn254::generate_stealth_private_key(ephemeral_public_key, viewing_key, spending_key, view_tag);
if stealth_private_key_opt.is_none() {
panic!("View tags did not match");
}
let derived_stealth_address = Bn254::derive_public_key(&stealth_private_key_opt.unwrap());
assert_eq!(derived_stealth_address, stealth_address);
}
添加新的曲线
要添加对新的曲线的支持,请按照以下步骤操作
- 将曲线添加到
Cargo.toml
文件中作为功能。 - 在
src
目录中创建一个新的模块,模块名称为曲线名称,后缀为_impl.rs
。 - 为该曲线实现
StealthAddressOnCurve
特性。 - 定义宏
define_curve_ffi
。 - 将曲线添加到
lib.rs
文件中的mod
声明中,并在需要时重新导出。 - 更新 README 以包含新的曲线。
- 将曲线添加到夜间版本的工作流程中。
- 将曲线添加到基准测试中。
构建和测试
构建
要构建项目,请使用以下命令
cargo build --release --features <bn254/bls12_381/bls12_377/secp256k1/secp256r1/etc>
测试
要运行测试,请使用以下命令
cargo test --release --features <bn254/bls12_381/bls12_377/secp256k1/secp256r1/etc>
性能基准
要运行基准测试,请使用以下命令
make bench
这将运行所有支持曲线的基准测试,并将结果输出到 benchmarks
目录。
FFI API
公开的 FFI API 支持所有曲线,以曲线名称为前缀。在构建库时请确保启用了正确的功能。
预编译库
预编译库在夜间版本中可用。
致谢
依赖项
~5.5MB
~101K SLoC