Contract Set
| Contract | Purpose |
|---|---|
| ERC5564Announcer | Emits stealth address announcements |
| ERC6538Registry | Maps addresses to stealth meta-addresses |
| WraithSender | Atomic send + announce in one transaction |
| WraithNames | .wraith name to meta-address mapping |
| WraithWithdrawer | Gas-sponsored withdrawals (EIP-7702) |
ERC5564Announcer
Minimal singleton. No storage, no access control. Just emits events.Event
Function
Usage
ERC6538Registry
Maps addresses to stealth meta-addresses per ERC-6538. Supports direct and delegated registration via EIP-712 signatures.Functions
Usage
WraithSender
Atomically transfers assets to stealth addresses and publishes announcements. UsesReentrancyGuard.
Functions
Usage
WraithNames
Privacy-preserving name registry. Maps human-readable names to stealth meta-addresses. Ownership proven via secp256k1 signature from the spending key embedded in the meta-address.Functions
Name Rules
- 3-32 characters
- Lowercase alphanumeric and hyphens only
- No leading or trailing hyphens
Signature Verification
The contract decompresses the spending public key from the first 33 bytes of the meta-address and verifies an ECDSA signature overkeccak256(name || metaAddress) with Ethereum signed message prefix. Includes on-chain point decompression (y = sqrt(x^3 + 7) mod p).
Usage
WraithWithdrawer
EIP-7702 delegation target for gas-sponsored stealth address withdrawals. A sponsor pays gas on behalf of the stealth address.Functions
Deployment
Deploy Script
Deployment Order
- Deploy ERC5564Announcer (no constructor args)
- Deploy ERC6538Registry (no constructor args)
- Deploy WraithSender (arg: announcer address)
- Deploy WraithNames (no constructor args)
- Deploy WraithWithdrawer (no constructor args) — optional, if EIP-7702 supported
Indexing
Set up a subgraph to indexAnnouncement events from the announcer contract:
Deployed Addresses (Horizen Testnet)
| Contract | Address |
|---|---|
| ERC5564Announcer | 0x8AE65c05E7eb48B9bA652781Bc0a3DBA09A484F3 |
| ERC6538Registry | 0x953E6cEdcdfAe321796e7637d33653F6Ce05c527 |
| WraithSender | 0x226C5eb4e139D9fa01cc09eA318638b090b12095 |
| WraithNames | 0x3d46f709a99A3910f52bD292211Eb5D557F882D6 |

