SNP#6 — Allow 1-2 Character Subdomain Labels

PROPOSAL NAME:

SNP#6 — Allow 1-2 Character Subdomain Labels

ABSTRACT:

Lower the default minimum subdomain label size from 3 characters to 1, enabling subnames like a.example.sui,
zk.example.sui, and 0.dao.sui. This is a single-constant change (literally one number: 31) that aligns
SuiNS with how ENS handles subnames.

The entire PR is 2 files changed, 28 lines added, 6 lines removed. That’s it.

PR: feat: allow 1-2 character subdomain labels by arbuthnot-eth · Pull Request #367 · MystenLabs/suins-contracts · GitHub
Issue: Allow 1-2 character subnames (align with ENS subdomain policy) · Issue #366 · MystenLabs/suins-contracts · GitHub

PROPOSAL CATEGORY:

Parameter Proposal (contract parameters)

BENEFIT TO SUINS ECOSYSTEM:

Why this matters:

  • Short subnames are essential for communities and agents — think 1.dao.sui, a.wallet.sui, zk.protocol.sui
  • ENS already allows this. Their official NameWrapper docs state: “By default there is no character limit on
    subnames.” The ENS protocol spec (EIP-137) says: “Labels and domains may be of any length.”
  • SuiNS’s own domain parsing layer already accepts 1-character labels — the subdomain config was just
    unnecessarily restrictive on top of that.

What this does NOT change:

  • Regular domain registration is completely unaffected. You still cannot register e.sui or ab.sui
    that’s enforced by a totally separate code path (CoreConfig) which still requires 3+ characters.
  • The shortest possible subname after this change is still 4+ total characters (1-char label + 3-char parent +
    TLD), e.g. a.abc.sui.

SECURITY NOTES:

This change was audited for security before submission:

  • SLD registration unaffected — uses CoreConfig.min_label_length (still 3), completely separate from
    SubDomainConfig
  • Single-hyphen labels impossibledomain.move rejects hyphens at position 0 or end of a label, so a
    1-char hyphen aborts at parse time
  • Character set unchanged — only a-z, 0-9, and internal hyphens are valid
  • Denylist still works — checks the full subdomain string, not just the label
  • Custom configs still work — deployers can set a higher minimum via config::new() if desired

STEPS TO IMPLEMENT & TIMELINE:

  1. Merge PR #367 (2 files, 28 insertions, 6 deletions)
  2. Deploy updated subdomains package

Timeline: Immediate upon approval. Code is written, tested (24/24 tests pass), and audited.

OVERALL COST:

$0 — Community contribution. No funding required.

CODE PACKET:

PR #367

VOTING PERIOD:

24 hours (minimum). This is a single-constant parameter change with zero financial impact.

4 Likes

I would love this. There’s a few municipal multi-chain projects I’m working on, and any that limit the subdomain characters, end up immediately disqualifying the use case.

Seems like a low/no impact thing to allow, and we could immediately prove out the use cases.

1 Like

Good idea, we absolutely need to vote this!

1 Like

(post deleted by author)

Just to be clear, this would only reduce the minimum size of subnames from multiples of 3 —6, 9, etc to allow for 4, 5, 6 character subnames. SuiNS already supports this in the contracts, only changing a restriction from 3 → 1 on the subnames contract. ENS already does this and has other interesting capabilities, but the decision here is simple.

This DOES NOT advocate for reducing the minimum SuiNS name down to 1-2 characters. That is explicitly left out of this SNP and PR because it is not recommended to ever change. Such change would require debates about price rather than about optionality, programmability, and composability for subnames.

1 Like