Aller au contenu

Sources de cette page

Chaque assertion de cette page renvoie a des revisions fixees. Ouvrez le chemin pour lire la source exacte verifiee.

atomicals-electrumx-1.5.2.0

Atomicals ElectrumX

Revision v1.5.2.0 (2025-03-27)

Ouvrir le chemin fixe: realmValidation

Version-sensitive ARC-20 and Atomicals validation behavior used as the pinned reference baseline.

universe-index-atomicals-nfts-and-realms

Universe Atomicals NFT, Realm, and Subrealm index

Revision 1d9109c68d95

Ouvrir le chemin fixe: server

Materialized read model for plain NFTs, Realms, and Subrealms projected from Atomicals ElectrumX.

Unicode, IDNA, and confusable names

Raw

Why two names that look identical can be different strings, what normalisation does, and the warnings a product must show.

Protocol behavior Verified 2026-08-31 Metadata & Sources

Describes the Atomicals protocol itself at the pinned reference revision. It does not promise that any product exposes it.

Page ID
protocol/realms/unicode-and-idna
Normative authority
Atomicals reference implementation
Networks
mainnet
Documentation version
2026.08
Audience
everyone, developer, integrator
Owner
bitcoin-universe-docs
Sources
Known limitations
  • Confusable detection reduces risk. It cannot eliminate it, because what looks alike depends on the font and the reader.

Ce contenu n’est pas encore disponible dans votre langue.

Names can contain characters beyond ASCII. That is useful and it is dangerous, because two different strings can render identically.

A reader sees one word. A comparison sees three:

Appearance What differs
A Latin lowercase a The ordinary code point
A Cyrillic lowercase a A different code point that renders the same in most fonts
A Latin a with a combining mark Two code points that compose to one glyph

Normalisation maps different byte sequences that mean the same thing to one form, so comparison works. Two rules follow:

  1. Normalise before comparing. Two names are the same only after both are normalised the same way.
  2. Keep the exact original bytes. The authoritative name is what was minted. The normalised form is for comparison, not for display or for identity.

Never store only the normalised form, and never display it as if it were the name.

Form Use
Exact minted bytes Identity, storage, and what a validator saw
Normalised form Comparison, deduplication, confusable detection
Display form What a reader sees, escaped and marked when risky
  1. Reject names that fail validation for the target rule set, with a clear reason.
  2. Normalise before comparing, never before storing.
  3. Detect mixed scripts within one name and warn.
  4. Detect confusability against names the user already uses and warn prominently.
  5. Escape names everywhere they are displayed, including in link text and error messages.
  6. Neutralise bidirectional control characters so a name cannot reorder surrounding text.
  7. Show the Atomical ID next to any name the user is about to act on.

A rejected name deserves a specific reason: which character, which rule. A generic failure teaches the user nothing and pushes them to guess.

The Universe read model surfaces Unicode and IDNA errors explicitly rather than returning a generic validation failure. See NFT and Realm API.