Contract Set
| Contract | Purpose |
|---|---|
| stealth-announcer | Emits stealth address announcements |
| stealth-registry | Maps addresses to stealth meta-addresses |
| stealth-sender | Atomic send + announce |
| wraith-names | .wraith name to meta-address mapping |
stealth-announcer
Emits announcement events. No persistent storage.Interface
Event
Emits a contract event with topic"announce":
Usage
stealth-registry
Maps addresses to 64-byte stealth meta-addresses.Interface
Validation
- Enforces 64-byte meta-address length (32 bytes spend + 32 bytes view)
- Requires auth from
registrant
Usage
stealth-sender
Atomic send + announce. Initializes with the announcer contract address.Interface
send function:
- Transfers
amountoftokenfromcallertostealth_address - Calls the announcer contract to emit an event
Usage
wraith-names
Name to meta-address mapping. Names are hashed via SHA-256 for storage keys.Interface
Validation
- Name: 3-32 characters, lowercase alphanumeric only
- Meta-address: must be exactly 64 bytes
- Caller auth required for register, update, release
Usage
Deployment
Build
Deploy
Initialize stealth-sender
After deploying both the announcer and sender:Event Fetching
Stellar announcements are fetched via Soroban RPC, not a subgraph:Differences from EVM Contracts
| Aspect | EVM (Solidity) | Stellar (Soroban) |
|---|---|---|
| Language | Solidity | Rust |
| Name sig verification | On-chain ECDSA recovery | Caller auth (Soroban built-in) |
| Event indexing | Subgraph / The Graph | Soroban RPC getEvents |
| Account model | Address always exists | Must createAccount first |
| Token transfers | msg.value / safeTransferFrom | Soroban token contract calls |
| Gas sponsorship | EIP-7702 (WraithWithdrawer) | Not applicable |

