Skip to content

spt-dark

Decentralized .dark domain 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 .dark names 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

TypeDescription
DarkAddressA .dark domain address
DarkResolverResolves .dark names via DHT storage
DarkDomainRecordSigned domain record stored in the DHT
DhtStorageTrait for DHT-backed domain storage
AddressBookEntryLocal address book entry for known peers
ShadowAddressOne-time stealth address
ShadowAddressManagerCreates and tracks shadow addresses
ShadowAddressPoolPool of pre-generated shadow addresses
ShadowAddressMixerMixes shadow addresses for unlinkability
DarkErrorCrate error type

Feature Flags

FeatureDefaultDescription
pqyesML-DSA signed domain records via spt-pq-crypto
shadowyesShadow address system (X25519 stealth addresses)

Released under the MIT License.