spt-dark
Decentralized
.darkdomain addressing and stealth shadow addresses for SPT
Overview
spt-dark provides two complementary privacy primitives for the SPT network: human-readable .dark domain names backed by ML-DSA signatures and DHT-based distributed storage, and one-time stealth shadow addresses using X25519 Diffie-Hellman inspired by Monero's view-key/spend-key model. It forms the addressing layer for privacy-preserving agent communication.
Key Features
- Dark domains -- human-readable
.darknames with ML-DSA signed domain records - Shadow addresses -- X25519 stealth one-time addresses with pool management and rotation policies
- DHT storage -- decentralized domain record resolution via distributed hash table
- Post-quantum signing -- optional ML-DSA signatures via
spt-pq-crypto - Memory safety -- zeroize-on-drop for all secret key material
Dependencies
Key internal dependencies:
spt-pq-crypto-- ML-DSA signatures for domain records (optional, default on)
Usage
rust
use spt_dark::{DarkAddress, DarkResolver, generate_dark_address, is_valid_dark_domain};
use spt_dark::{ShadowAddressManager, ShadowAddressPool, NetworkType};
// Generate a .dark address
let addr = generate_dark_address("myagent");
// Validate a domain
assert!(is_valid_dark_domain("myagent.dark"));API Reference
Core Types
| Type | Description |
|---|---|
DarkAddress | A .dark domain address |
DarkResolver | Resolves .dark names via DHT storage |
DarkDomainRecord | Signed domain record stored in the DHT |
DhtStorage | Trait for DHT-backed domain storage |
AddressBookEntry | Local address book entry for known peers |
ShadowAddress | One-time stealth address |
ShadowAddressManager | Creates and tracks shadow addresses |
ShadowAddressPool | Pool of pre-generated shadow addresses |
ShadowAddressMixer | Mixes shadow addresses for unlinkability |
DarkError | Crate error type |
Feature Flags
| Feature | Default | Description |
|---|---|---|
pq | yes | ML-DSA signed domain records via spt-pq-crypto |
shadow | yes | Shadow address system (X25519 stealth addresses) |