Onboarding & PIN
Three steps to set up your private identity: create a PIN, choose a username, and activate your stealth keys on-chain.
Three Steps to Privacy
When you first connect a wallet, Dust walks you through a three-step onboarding wizard. Each step builds on the last to create a fully functional stealth identity:
- Set your PIN — derives your cryptographic stealth keys from a wallet signature
- Choose a username — registers a human-readable name (e.g.
alice.dust) mapped to your meta-address - Activate — publishes your ERC-6538 meta-address on the stealth registry so others can compute stealth addresses for you
Step 1: Set Your PIN
Your 6-digit PIN is the cornerstone of your stealth identity. Together with a deterministic wallet signature, it derives all the private keys that control your shielded funds.
[ CREATE PIN ]
PIN + wallet signature → stealth keys
- 01
Wallet signs a deterministic message
The app requests a signature over a fixed message. This signature is the same every time for the same wallet, providing a stable entropy source without storing any secret.
- 02
Signature + PIN enter PBKDF2
The signature and your 6-digit PIN are combined and fed into
PBKDF2with 100,000 iterations and a versioned salt (v2). This produces two independent 32-byte seeds: a spending seed (salt:Dust Spend Authority v2) and a viewing seed (salt:Dust View Authority v2). - 03
Seeds become BN254 scalar keys
Each seed is hashed with Poseidon and reduced modulo the BN254 scalar field order. The spending seed becomes
spendingKey = Poseidon(spendingSeed) mod pand the viewing seed becomesnullifierKey = Poseidon(viewingSeed) mod p. These keys operate within the BN254 curve used by the ZK circuits. - 04
Keys held in memory only
Derived keys are stored in a React
ref— never in component state orlocalStorage. They exist only for the duration of the browser session and are cleared when the tab closes or the wallet disconnects.
Step 2: Choose a Username
Your username is a human-readable stealth name that maps to your meta-address on-chain. Instead of sharing a long hex address, you can tell someone to send funds to alice.dust.
[ USERNAME ]
Human-readable stealth name
- Names must be lowercase alphanumeric (plus
-and_) - The app checks availability in real time with a debounced lookup
- Once registered, the name is permanently associated with your meta-address via a relayer API
Step 3: Activate Stealth Keys
Activation publishes your ERC-6538 meta-address — a pair of public keys (spending + viewing) — on the stealth registry contract. This on-chain registration allows anyone to:
- Look up your public keys by wallet address or stealth name
- Compute a fresh stealth address using ECDH to send you funds privately
- Announce the payment so only you can detect and claim it
The wizard retries ERC-6538 registration up to 3 times with exponential backoff to handle transient RPC failures, especially for Privy embedded wallets.
PIN Is Irrecoverable
Privy Embedded Wallets