Labels: Stellar Wave, stellar, audit, security, drips, help-wanted
Tier: L (1–2 weeks)
Type: audit
Context
contracts/stellar/stealth-registry/ stores the (registrant, scheme_id) → 64-byte meta-address mapping. It is Wraith's analogue to ERC-6538 on EVM. Unlike the announcer, it has persistent storage and arbitrary user input flowing into DataKey::MetaAddress, so the attack surface is substantially larger.
We need an independent security review.
Scope
Same severity framework and report format as the announcer audit. Focus areas specific to the registry:
- Storage key collisions — can two distinct registrants produce the same
DataKey? Inspect the Symbol / Address / u32 packing.
- Meta-address length validation — the 64-byte constraint is checked in
register_keys(); verify there's no path that bypasses it (overloads, raw set() calls).
- Authorization — Soroban's
require_auth() must cover both first-time and replacement writes. Confirm an attacker can't squat a victim's registry slot before the victim registers.
- Scheme ID forward compatibility — what happens if a client passes an unknown
scheme_id? Document the intended behavior; flag if the contract silently writes garbage.
- State exposure — does
stealth_meta_address_of return data for unauthorized callers? (It should — registry is public — but confirm there's no privileged-only side channel.)
- Storage rent / TTL — Soroban entries have TTL; verify
extend_ttl semantics align with "permanent registration" UX expectations. A user shouldn't lose their registry entry to expiry.
- Replacement & nonce semantics — if the contract allows overwriting an existing registration, is there replay-protection across the write boundary?
Acceptance criteria
Files to start with
contracts/stellar/stealth-registry/src/lib.rs
- Companion EVM contract:
contracts/evm/contracts/ERC6538Registry.sol (for behavioral parity check)
- ERC-6538 spec: https://eips.ethereum.org/EIPS/eip-6538
Labels:
Stellar Wave,stellar,audit,security,drips,help-wantedTier: L (1–2 weeks)
Type: audit
Context
contracts/stellar/stealth-registry/stores the (registrant, scheme_id) → 64-byte meta-address mapping. It is Wraith's analogue to ERC-6538 on EVM. Unlike the announcer, it has persistent storage and arbitrary user input flowing intoDataKey::MetaAddress, so the attack surface is substantially larger.We need an independent security review.
Scope
Same severity framework and report format as the announcer audit. Focus areas specific to the registry:
DataKey? Inspect theSymbol/Address/u32packing.register_keys(); verify there's no path that bypasses it (overloads, rawset()calls).require_auth()must cover both first-time and replacement writes. Confirm an attacker can't squat a victim's registry slot before the victim registers.scheme_id? Document the intended behavior; flag if the contract silently writes garbage.stealth_meta_address_ofreturn data for unauthorized callers? (It should — registry is public — but confirm there's no privileged-only side channel.)extend_ttlsemantics align with "permanent registration" UX expectations. A user shouldn't lose their registry entry to expiry.Acceptance criteria
contracts/stellar/stealth-registry/audits/2026-XX-author.md.tests/audit.rs.Files to start with
contracts/stellar/stealth-registry/src/lib.rscontracts/evm/contracts/ERC6538Registry.sol(for behavioral parity check)