The Sigil Name System (SNS) is the native on-chain naming layer. It binds human-readable names under the .sigil root to Sigil identities, wallet addresses, mail discovery, websites, Weave artifacts, service endpoints, and future app records. SNS is consensus state. Weave bytes are not consensus state. SNS stores compact commitments and pointers that clients verify before use.

Architectural relationship

Sigil Name System
  └─ Sigil Mail Registry
       └─ Weave Mailbox
  └─ Weave Site
  └─ Weave Drive / File
SNS extends the usernames registry: where usernames map @alice → DID, SNS maps alice.sigil → resolver record set. The username system is the compatibility and allocation base; SNS adds the DNS-shaped resolver layer.

Live protocol surface

ModulePurpose
node/sigil-core/src/sns.rsASCII-only .sigil normalisation, service-label handling, namehash, resolver records, delegation, SNS transaction data.
node/sigil-node/src/executor_mail.rsRoot and subdomain registration, renewal, record updates, deletion, delegation, primary-name changes, commit/reveal nonce recording.
node/sigil-node/src/mail_durable.rsAkashaKV persistence for SNS names, records, owner indexes, primary-name indexes, delegation records, registration commitments, sealed bids, auction records.

Transactions

VariantPurpose
CommitNameRegistrationCommit a domain-separated (name, bidder, nonce) and lock a deposit.
RegisterNameReveal a prior commit; register the name under fixed-price tier.
RenewNameExtend the lease (annual; up to 10 years prepaid).
SetNameRecordsSet or update resolver records.
DeleteNameRecordsRemove resolver records.
DelegateSubdomainDelegate a subdomain to a different DID.
RevokeDelegationRevoke a subdomain delegation.
SetPrimaryNameSet the primary .sigil name for a DID.
CommitSealedNameBidCommit a sealed bid for a premium-name auction.
RevealSealedNameBidReveal a sealed bid.
FinalizeSealedNameAuctionSettle a sealed-bid auction.

Resolver records

Each name carries a set of typed resolver records:
KindPayloadPurpose
WalletDidSend-to address.
Mailmailbox://<...>Mail discovery.
Websiteweave://<cid> or HTTPS URLSite target.
Service(name, endpoint)Generic service binding.
Text(key, value)Free-form metadata.
Subdomain(label, did)Delegated subdomain owner.
Records are signed by the name owner. The chain stores the record set; clients verify against the owner’s signing key before trusting a target.

Pricing

Fixed-price tiers for non-premium names:
LengthAnnual lease (MINT)
3 chars10,000
4 chars1,000
5 chars100
6+ chars10
Premium names (1–4 characters and reserved names) are allocated through sealed-bid auctions.

Commit/reveal

Registration uses commit/reveal to prevent front-running:
  1. Commit: CommitNameRegistration with commit = blake3("sigil/sns/v1\n" || name || bidder_did || nonce). Locks the deposit.
  2. Wait one block.
  3. Reveal: RegisterName with the cleartext (name, nonce). Verifies the commit, registers the name, debits the registration price to treasury, refunds the surplus.

Sealed-bid auction

For premium names, a sealed-bid auction settles in three phases:
  1. Bid phase: bidders submit CommitSealedNameBid with commit = blake3(...) and lock the bid amount.
  2. Reveal phase: bidders submit RevealSealedNameBid with the cleartext bid. Lower-bid deposits are returned; the highest-bid deposit stays locked.
  3. Finalise: anyone may submit FinalizeSealedNameAuction after the reveal window closes. The winning bid is debited to treasury and the name is registered to the winning DID.
The current production path is first-price sealed-bid. Vickrey-style second-price settlement, anti-sniping for open auctions, and governance-tunable burn/treasury splits are roadmap items.

RPC

MethodReturns
sigil_resolveNameRecords for <name>.sigil.
sigil_getNameRecordsAll resolver records for a name.
sigil_resolveMailMailbox policy for a name.
sigil_resolveWebsiteWebsite record for a name.
sigil_getSnsAuctionSealed-bid auction record.
sigil_listSnsAuctionsOpen auctions.

Limits

LimitValue
Character setASCII [a-z0-9-]
Length3–32 chars
Reserved namesGenesis-pinned list (governance-amendable).
Max lease years10

Implementation

  • Types: node/sigil-core/src/sns.rs.
  • Executor: node/sigil-node/src/executor_mail.rs.
  • Durable state: node/sigil-node/src/mail_durable.rs.

See also