@sorandomains/owner; the contracts are permissionless either way.
Activate your registrar (once)
A namespace issues nothing until its own Registrar contract exists. Activation deploys one — signed by your wallet, owned by your wallet — as a one-time step:1
Choose the ownership policy
Every name your registrar issues carries this policy, and it’s what holders (and their wallets) see as the ownership guarantee:
- Reclaimable — you can take an issued name back. Right for names tied to an ongoing relationship (employees, customers, subscriptions).
- Permanent — issued names carry no expiry and no reclaim path in the deployed code; closing the one-way door later locks that in absolutely — the code freezes, enforced against everyone, including you.
2
Sign and deploy
The console prepares the deploy transaction; your wallet signs it. The registrar lands on chain owned by your wallet, and issuance unlocks. Only the namespace owner’s wallet can activate.
Issue a single name
Enter a label and the holder’sG… address; the name is issued as label.yournamespace, directly to the holder’s wallet. Each name is its own on-chain transaction. On a self-custody namespace your wallet signs it; the console then confirms the name landed with the intended holder before calling it done.
Issue in bulk from CSV
For onboarding a user base, upload a CSV of rows:label,holder pair per row. The console validates every row up front (bad labels and duplicate rows are counted and skipped), then issues sequentially — each name is still its own transaction, so keep the tab open while the run executes. You get a per-label report at the end: which rows succeeded, which failed and why, and which are uncertain (submitted but not yet confirmed) so you never blind-retry a name that may still land.
What it costs
Names are free. Soran charges nothing per name — the only costs are Stellar’s own network fees and storage rent, paid in XLM by whoever signs (your wallet on self-custody namespaces):
Figures are benchmarked on testnet; the live numbers for your namespace are on the console’s Billing tab. At these rates, issuing 10,000 names costs on the order of 800 XLM once, and roughly 1,600 XLM a year to keep every one of them hot.
Cold names and waking
Cold is not expiry:- A name idle past the dormancy threshold (90 days by default, operator-tunable) is marked cold: the platform stops paying its storage rent, and its ledger entry may eventually be archived by the network. It still belongs to its holder. Ownership is never decided by storage.
- A cold name wakes on its next use: the next resolution through Soran instantly returns it to live status in the hosted resolver, and the platform’s keeper resumes paying its storage rent while its ledger entry is still present on chain. If the network has already archived the entry, the name stays readable through the hosted API, but an explicit on-chain restore is needed before direct contract reads resolve it again — nothing to re-buy either way.
- A name going cold fires the
went_coldwebhook, so you can watch dormancy across your namespace.