The window, step by step
1
Announce
You post the claim publicly on chain: the label, your claimant address, and your evidence basis. Signing is a normal wallet transaction — through the hosted console’s wizard, or self-custodied (the API can prepare an unsigned announce transaction for your own key).
2
The objection window
A fixed window opens — the contract enforces a minimum of one day, and each deployment sets its own length: one day on testnet, five days on mainnet. The allocation queue shows the live countdown on any claim. During it, anyone may object by posting a bond and a competing basis. An objection freezes the clock until it’s ruled on. You can start integrating while the window runs; you just can’t execute yet.
3
Execute
Once the window elapses unopposed,
execute is permissionless — anyone can trigger it (the hosted deployment does it for you). The claim calls the immutable Registry’s allocate, the namespace node is written to your address, and the allocator’s power over it ends permanently.Objections and adjudication
Objections are bonded so they cost something, and adjudicated so they resolve:- Anyone except the claimant or the adjudicator may object during the window, with a bond and a stated basis.
- Upheld objection: the claim is rejected and the objector’s bond is refunded. The rejected claimant is barred from re-announcing that label; after a 30-day cooldown, other claimants may — a rejection never locks a label away forever.
- Dismissed objection: the bond is burned (never paid to anyone — no address can profit from dismissals) and the claim’s window resumes.
- Adjudication has a deadline. If no ruling lands within 30 days, a permissionless timeout resumes the claim, settled as a dismissal. Adjudicator inaction cannot freeze a label indefinitely.
- Objection cycles are capped per label, so a claim can’t be frozen by an endless dismiss-and-re-object loop.
What evidence helps
Attach at least one basis when you announce; stronger evidence wins if anyone objects. The console’s wizard collects:
A trademark or a verifiable TXT record on
yourbrand.com makes an objection against yourbrand an uphill argument. Evidence goes on chain with the claim, in public, where objectors and the adjudicator can weigh it.
Reserved labels
Some labels follow a different path. At Registry deployment, a set of reserved labels — launch partners, known brands — was committed into an immutable merkle root. Reservation is not ownership: it constrains how the label can be placed, for everyone, including the platform. Reserved labels come in two kinds:- Bound — reserved for a specific address, which can claim directly with a merkle proof, bypassing the claim process entirely. While a bound reservation is active, the label can’t be announced through the open window at all — only its reserved address can claim it. The strongest guarantee a launch partner can hold.
- Unbound — goes through the same public announce → objection → execute window as any other claim; the only difference is that the allocation must carry the label’s membership proof instead of a not-reserved proof. Governance rules only if someone objects, exactly as for unreserved labels — and the evidence table above is exactly what an objection would weigh.
A quick first check:
await soran.isAvailable("yourbrand") tells you whether the namespace is unowned on chain. Reserved-but-unclaimed labels also read as available, and the check is blind to rival claims mid-window — the console additionally checks the reserved list and whether a rival claim is already in its window.