KNS implementer kit

Share this URL with the KNS team

What to implement for .kas names after Toccata

Handoff, not a product claim. Names are inscriptions + an indexer, not a new internet. Read REAL.md first. Official: inscriptions, wallets, indexer API.

Public URL
https://stp-kas.github.io/kns-spec/

Source: github.com/STP-KAS/kns-spec. Letter: FOR-KNS.md.

Ask

  1. Keep inscribing with KasWare or Kastle. KasWare: buildScript({ type: "KNS" }) then submitCommitReveal. Kastle: commitReveal("mainnet", "kns", data) (two popups). Reveal output 0 pays the protocol fee. KasWare · Kastle.
  2. Keep uniqueness on the indexer. First valid reveal wins. Nodes will not reject a second alice.kas. A KIP-20 covenant_id does not encode the label.
  3. Treat covenant name UTXOs as optional elevation. KasName.sil is compiled with official Silverscript v1.0.0 (Ori, 9 Sep 2026). Own UTXO only. Continuation keeps the same sompi; pay fees from a sibling input. No foreign readInputState. Argent is the multi-actor layer above this and is not release-ready.
  4. Optional overlay. Publish ipfs/peer/onion so kns://alice.kas runs a dApp locally without ICANN. overlay.html.

Inscription (live)

Protocol id kns. Commit-reveal envelope. Indexer FCFS. KasWare and Kastle today.

Covenant (proven P2SH)

Unrevealed deploys on covenants.kaspa.com. Script-hash lock. Not consensus uniqueness.

Do not mix these

trump.kas and bakery.kas already exist as KNS inscriptions owned by other keys. The P2SH rows below are a second object. opus.kas has no inscription. Subnames (opus.dei.kas) are not an inscription op.

Proven mainnet

Re-checked 2026-09-08 against api.kaspa.org, api.knsdomains.org, and indexer.kaspa.com. Run go run ./cmd/kns-spec prove to repeat.

1. KNS inscription (KasWare envelope)

Reveal script:

<xonly_pubkey> OP_CHECKSIG OP_FALSE OP_IF <kns> <0> <{"op":"create","p":"domain","v":"kns"}> OP_ENDIF
Namekns.kas
Inscription223233acf8e5abea9291627a5edd859439c4553100c71309b86599f02414a532i0
Reveal txexplorer.kaspa.org
Ownerkaspa:qzt9yuqceqvt2vk9dz7ddzayaa5flnenkymec59xvzm55ln3k72vgecxjhnjp

That reveal is a pubkey spend with a kns envelope. It is not a Toccata covenant program. The covenant explorer has no row for it. The KNS indexer does.

2. Covenant deploys on covenants.kaspa.com

Action deploy, status unrevealed, identity scriptHashFallback (no KIP-20 id on the UTXO yet).

NameKASTxCovenant
bakery.kas0.5 095622d4 9baa5cb8
michelleobamaisaman.kas100 abf7d9e1 f7fbf09a
trump.kas100 22ca97e1 5a13bcd0
opus.kas100 bb8e054d 72c55a09
opus.dei.kas100 34d410ef 6f7b81bd
Before sending KAS to a resolved .kas name, show the address and require a check. The map is indexer-derived. Transfers cannot be reversed.

Implement next

  1. Envelope, fees, ops, check — protocol.html
  2. KasWare — kasware.html and working page
  3. Kastle — kastle.html (fee output 0 still required)
  4. Optional Name UTXO — KasName.sil

This is not