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: 3 → 1) 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.suiorab.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 impossible —
domain.moverejects 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:
- Merge PR #367 (2 files, 28 insertions, 6 deletions)
- 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.