.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
@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
| Module | Purpose |
|---|---|
node/sigil-core/src/sns.rs | ASCII-only .sigil normalisation, service-label handling, namehash, resolver records, delegation, SNS transaction data. |
node/sigil-node/src/executor_mail.rs | Root and subdomain registration, renewal, record updates, deletion, delegation, primary-name changes, commit/reveal nonce recording. |
node/sigil-node/src/mail_durable.rs | AkashaKV persistence for SNS names, records, owner indexes, primary-name indexes, delegation records, registration commitments, sealed bids, auction records. |
Transactions
| Variant | Purpose |
|---|---|
CommitNameRegistration | Commit a domain-separated (name, bidder, nonce) and lock a deposit. |
RegisterName | Reveal a prior commit; register the name under fixed-price tier. |
RenewName | Extend the lease (annual; up to 10 years prepaid). |
SetNameRecords | Set or update resolver records. |
DeleteNameRecords | Remove resolver records. |
DelegateSubdomain | Delegate a subdomain to a different DID. |
RevokeDelegation | Revoke a subdomain delegation. |
SetPrimaryName | Set the primary .sigil name for a DID. |
CommitSealedNameBid | Commit a sealed bid for a premium-name auction. |
RevealSealedNameBid | Reveal a sealed bid. |
FinalizeSealedNameAuction | Settle a sealed-bid auction. |
Resolver records
Each name carries a set of typed resolver records:| Kind | Payload | Purpose |
|---|---|---|
Wallet | Did | Send-to address. |
Mail | mailbox://<...> | Mail discovery. |
Website | weave://<cid> or HTTPS URL | Site target. |
Service | (name, endpoint) | Generic service binding. |
Text | (key, value) | Free-form metadata. |
Subdomain | (label, did) | Delegated subdomain owner. |
Pricing
Fixed-price tiers for non-premium names:| Length | Annual lease (MINT) |
|---|---|
| 3 chars | 10,000 |
| 4 chars | 1,000 |
| 5 chars | 100 |
| 6+ chars | 10 |
Commit/reveal
Registration uses commit/reveal to prevent front-running:- Commit:
CommitNameRegistrationwithcommit = blake3("sigil/sns/v1\n" || name || bidder_did || nonce). Locks the deposit. - Wait one block.
- Reveal:
RegisterNamewith 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:- Bid phase: bidders submit
CommitSealedNameBidwithcommit = blake3(...)and lock the bid amount. - Reveal phase: bidders submit
RevealSealedNameBidwith the cleartext bid. Lower-bid deposits are returned; the highest-bid deposit stays locked. - Finalise: anyone may submit
FinalizeSealedNameAuctionafter the reveal window closes. The winning bid is debited to treasury and the name is registered to the winning DID.
RPC
| Method | Returns |
|---|---|
sigil_resolveName | Records for <name>.sigil. |
sigil_getNameRecords | All resolver records for a name. |
sigil_resolveMail | Mailbox policy for a name. |
sigil_resolveWebsite | Website record for a name. |
sigil_getSnsAuction | Sealed-bid auction record. |
sigil_listSnsAuctions | Open auctions. |
Limits
| Limit | Value |
|---|---|
| Character set | ASCII [a-z0-9-] |
| Length | 3–32 chars |
| Reserved names | Genesis-pinned list (governance-amendable). |
| Max lease years | 10 |
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
- Usernames — compatibility handles.
- Register a name — recipe.
- Sigil Mail — mail discovery via SNS.