Labels: Stellar Wave, stellar, feature, drips, help-wanted
Tier: L (1–2 weeks)
Type: feature
Context
Today, registering a .wraith name on Stellar requires the user to hold and spend XLM. This is a real onboarding friction for users who arrive via fiat onramp and don't yet hold native asset. EVM WraithNames already supports registerOnBehalf() with an EIP-712 signature so a relayer (e.g., Spectre) can pay the fees.
We want feature parity on Stellar.
Scope
Add to contracts/stellar/wraith-names/:
- A new entrypoint
register_on_behalf(owner: Address, name: String, meta_address: BytesN<66>, signature: BytesN<64>, expiry: u64) where:
signature is an ed25519 signature by owner over a SHA-256 hash of a canonical message domain || "wraith-names:register" || name || meta_address || expiry.
expiry is a Stellar ledger sequence after which the signature is invalid.
- Verification logic on-chain using Soroban's
env.crypto().ed25519_verify(...).
- Replay protection — track used signature hashes in storage (or use nonces, justify either choice).
- Equivalent
update_on_behalf and release_on_behalf.
- Tests covering: success, wrong signer, expired, replay attempts, malformed inputs.
Open design questions to address in the PR
- Where does the "canonical message" definition live so SDK and contract stay in sync? Propose a
WRAITH_NAMES_DOMAIN constant.
- Should the relayer receive a tip from the contract caller (paid out of pre-funded balance) or is gas-sponsorship sufficient for now? Argue.
- What's the storage cost of replay protection? Look at issue #06 (budget profiling) for the framework.
Acceptance criteria
Why this matters
This is the only path to "create your Wraith name during signup" UX. Without it, every new Stellar user hits a XLM funding wall before they can claim identity.
Resources
Labels:
Stellar Wave,stellar,feature,drips,help-wantedTier: L (1–2 weeks)
Type: feature
Context
Today, registering a
.wraithname on Stellar requires the user to hold and spend XLM. This is a real onboarding friction for users who arrive via fiat onramp and don't yet hold native asset. EVMWraithNamesalready supportsregisterOnBehalf()with an EIP-712 signature so a relayer (e.g., Spectre) can pay the fees.We want feature parity on Stellar.
Scope
Add to
contracts/stellar/wraith-names/:register_on_behalf(owner: Address, name: String, meta_address: BytesN<66>, signature: BytesN<64>, expiry: u64)where:signatureis an ed25519 signature byownerover a SHA-256 hash of a canonical messagedomain || "wraith-names:register" || name || meta_address || expiry.expiryis a Stellar ledger sequence after which the signature is invalid.env.crypto().ed25519_verify(...).update_on_behalfandrelease_on_behalf.Open design questions to address in the PR
WRAITH_NAMES_DOMAINconstant.Acceptance criteria
signNameRegistrationfromsdk/src/chains/stellar/).Why this matters
This is the only path to "create your Wraith name during signup" UX. Without it, every new Stellar user hits a XLM funding wall before they can claim identity.
Resources
contracts/evm/contracts/WraithNames.sol::registerOnBehalf