Skip to content

Gasless signed .wraith name registration on Stellar #10

@truthixify

Description

@truthixify

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/:

  1. 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.
  2. Verification logic on-chain using Soroban's env.crypto().ed25519_verify(...).
  3. Replay protection — track used signature hashes in storage (or use nonces, justify either choice).
  4. Equivalent update_on_behalf and release_on_behalf.
  5. 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

  • New entrypoints implemented with full unit and property test coverage.
  • Replay protection demonstrated by adversarial tests.
  • SDK follow-up issue filed describing how to construct the signed message (mirror signNameRegistration from sdk/src/chains/stellar/).
  • Demo follow-up issue filed for surfacing the new flow in the UI.
  • Spectre follow-up issue filed for using this as the default registration path when an agent's Stellar wallet is unfunded.

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

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programdripsFunded via Drips NetworkfeatureNew feature workhelp wantedExtra attention is neededstellarTouches Stellar / Soroban code

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions