Skip to main content
Beyond issuing, @sorandomains/owner covers the owner-authorized lifecycle operations — reclaim, renew, treasury, transfers, resolver pointing, permanence. Deployment-time flows (deploying a Registrar or Resolver) run through the console or the Registry contract directly. All of it is policy- and permission-checked on chain — the SDK is a convenience, never an authority.

Reclaim and renew

  • reclaim works only on namespaces whose immutable policy allows it — the contract answers NotReclaimable both when the policy never allowed it and after makePermanent removed the power forever.
  • renew applies to finite-term names; on a permanent-term namespace it answers PermanentName.
  • setTreasury(namespace, address) routes the custody of future reclaims to a treasury account instead of the owner wallet.

Namespace transfers

Transferring the whole namespace is a two-step, accept-to-move flow — a typo’d recipient can never burn it:
The recipient completes it from their side — same package, their signer:
Nothing moves until acceptance; re-proposing replaces the pending offer.

Pointing the resolver

Holders’ explicit records live on the resolver; names without one resolve through the Registrar’s built-in target. Once the namespace is permanent, the resolver pointer is frozen (ResolverFrozen) — the pay-to path can never be silently redirected.

The one-way door

This is the permanence guarantee made real: reclaim locks off forever, the Registrar’s code freezes, and every issued name becomes permanently its holder’s. There is no path back — for you, for Soran, for anyone. The SDK requires the explicit confirmIrreversible flag, and the contract enforces its own preconditions: the policy must have always issued permanent terms (FiniteTermPolicy otherwise), and the namespace’s Registrar/Resolver must carry clean deployment provenance. Check where you stand first:

Dormant state, handled

Stellar archives on-chain entries whose rent lapses. A dormant namespace is still owned — and the SDK treats archival honestly: write operations restore archived entries automatically (as extra owner-signed transactions), and reads report “archived” as a distinct error rather than pretending the entry doesn’t exist.