# Guide: Registering a Subname

Give your app a human name — `myapp.chainrender.eth` — so it's discoverable and resolvable by name instead of by
hash. Registration is open to anyone, ownerless, and gated only by a **refundable stake** (an anti-spam cost, not a
fee or an approval).

## How it works

Names are subnames under `chainrender.eth`, managed by the ownerless **`SubnameStakeRegistrar`**. You register a
label (`myapp`) pointing at your app's component hash by posting a small refundable stake. An ENSIP-10 **wildcard
resolver** then makes `myapp.chainrender.eth` resolve in any ENS-aware tool — no per-name ENS transaction needed.

> **The design:** the registrar is the source of truth; ENS is a read-only projection of it. So naming stays
> ownerless and verifiable while remaining fully ENS-compatible. See **[ENS Integration](./ens-integration.md)**.

## Register

```
SubnameStakeRegistrar.register("myapp", appComponentHash)   // + the refundable stake (msg.value)
```

- **No approval, no gatekeeper.** Anyone can register; entry is open.
- **The stake is refundable.** It's an anti-spam deposit, not a payment.
- **Reserved names** (a fixed carve-out set at deployment) are protected and can't be claimed.

## The lifecycle (three states)

| State | Meaning |
|---|---|
| **Active** | Staked and live. Your name resolves; it appears in the catalog. |
| **Refunded** | After a lock window with no upheld flag, you withdraw your stake. The name stays — now an established, honest entry. |
| **Slashed** | If a quorum of the immutable attester set upholds a flag (e.g. spam/abuse), the stake is forfeited and the entry is demoted. Slashing can *demote*, never *block* — the system stays un-censorable. |

The key property: **anyone can register; not everyone is surfaced equally.** Entry is open (a refundable stake);
prominence is *earned* (a clean history, attestations). No one can prevent you from registering; no one can be
forced to feature you.

## After registering

- Your app resolves at `myapp.chainrender.eth`.
- Add **versioning** so you can update safely (timelocked, observable) — see
  **[Update a Deployed App](./update-app.md)**.
- Withdraw your stake after the lock window (it's yours; it was only ever an anti-spam deposit).

## Ownerless by construction

The registrar has **no owner, no admin, no setter**. Every parameter — the stake size, lock window, slash quorum,
treasury, reserved list — is fixed at deployment and can never be changed. Every wei is either refundable to you or
routed by fixed rules. You're not trusting an operator; you're trusting immutable code.

## Related
- **[ENS Integration](./ens-integration.md)** · **[Submitting to the Catalog](./submitting.md)** ·
  **[Contracts → Registries](../contracts/registries.md)**
