mirror of
https://github.com/vacp2p/stealth-address-kit.git
synced 2026-01-09 14:48:08 -05:00
f9c8286db051b6ede1c5572c092b1b4d4c405312
stealth-address-kit
Uses the arkworks-rs suite of libraries, and utilities from rln
Existing Implementations
ark_bn254ark_bls_12_381ark_bls_12_377secp256k1secp256r1
Usage
use erc_5564_rs::{StealthAddressOnCurve};
use ark_bn254::Bn254; // or ark_bls_12_381::Bls12_381 or ark_bls_12_377::Bls12_377, erc_5564_rs::Secp256k1, erc_5564_rs::Secp256r1
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_commitment, view_tag) = Bn254::generate_stealth_commitment(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_commitment = Bn254::derive_public_key(stealth_private_key_opt.unwrap());
assert_eq!(derived_commitment, stealth_commitment);
}
Adding a new curve
- Add the curve to the
Cargo.tomlfile, as a feature - Create a new module in the
srcdirectory, with the curve name, suffixed by_impl.rs - Implement the
StealthAddressOnCurvetrait for the curve - Add the curve to the
lib.rsfile, in themoddeclaration - Add the curve to the FFI API, in the
ffi.rsfile - Add the curve to the README
- Add the curve to the nightly release workflow
Building and Testing
-
Building
cargo build --release --features <bn254/bls12_381/bls12_377/secp256k1/secp256r1> -
Testing
cargo test --release --features <bn254/bls12_381/bls12_377/secp256k1/secp256r1>
FFI Api
The exposed FFI API supports all curves, prefixed by the curve name. Ensure that the correct feature is enabled when building the library.
Precompiled Libraries
Check out the nightly releases.
Attribution
Description
Languages
Rust
98.6%
Makefile
1.4%