mirror of
https://github.com/vacp2p/stealth-address-kit.git
synced 2026-01-08 21:17:59 -05:00
v0.2.0-beta
* chore: refactor into 2 crates, example and sdk * fix: cleanup * fix: readme
stealth-address-kit
Uses the arkworks-rs suite of libraries.
Existing Implementations
ark_bn254ark_bls_12_381ark_bls_12_377secp256k1secp256r1pallasvestabw6_761
Usage
use stealth_address_kit::StealthAddressOnCurve;
use ark_bn254::Bn254; // or ark_bls_12_381::Bls12_381 or ark_bls_12_377::Bls12_377, stealth_address_kit::Secp256k1, stealth_address_kit::Secp256r1, etc
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);
}
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 - Define the macro
define_curve_ffi - Add the curve to the
lib.rsfile, in themoddeclaration, as well as re-export if required - 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/etc> -
Testing
cargo test --release --features <bn254/bls12_381/bls12_377/secp256k1/secp256r1/etc>
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
Releases
5
Languages
Rust
98.6%
Makefile
1.4%