> For the complete documentation index, see [llms.txt](https://argon-4.gitbook.io/argon-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://argon-4.gitbook.io/argon-docs/suresign/protocol-packs.md).

# Protocol packs

Protocol packs are the pinned, in-repo rules by which SureSign recognizes, decodes, validates, and explains each protocol it supports.

Kaspa carries many things besides KAS: inscription protocols for tokens and names, covenants, EVM Layer traffic. SureSign learns each of them through a **protocol pack**: a unit of code, shipped inside the kernel, that knows how to recognize a protocol's transactions, decode their state, validate their rules, describe their effects, and render their section of the review. One kernel, one review model, no parallel engines.

## What a pack does

```
identify(bytes)          → is this mine, and exactly which version?
decode(bytes)            → the protocol state this transaction carries
encode_intent(intent)    → the state a user's intent should produce
validate(state)          → conservation and state-transition rules
effects(state)           → what changes, in kernel-authored sentences
review(state)            → the pack's section of the ReviewPlan
```

Every pack declares its identity, its pinned upstream version, the networks it supports, its **maturity** (consensus, convention, indexed protocol, experimental), and ships with deterministic test vectors. A pack never bypasses the review, the sighash policy, or the post-sign equivalence check; it only tells the kernel what a transaction means.

## Packs that ship

| Pack                             | Identity                              | Upstream pin                                  | Maturity                                                      | What it covers                                                                                                                                                                                                                                                  |
| -------------------------------- | ------------------------------------- | --------------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **KRC-20**                       | `krc20@kasplex-3.01.260403`           | Kasplex protocol documentation                | Indexed                                                       | Deploy, mint, transfer. Commit-and-reveal construction, fee rules, custody lots.                                                                                                                                                                                |
| **KRC-721**                      | `krc721@kat-2.0.0`                    | KAT KRC-721 specification                     | Indexed                                                       | Deploy, mint, transfer, discount. Royalties and premints. Marketplace operations refused.                                                                                                                                                                       |
| **KNS**                          | `kns@docs-0.1.4`                      | KNS documentation                             | Indexed                                                       | Create, text records, transfer, and the primary-name signing message. Fee tiers by length, paid to the protocol's fee address.                                                                                                                                  |
| **Covenant catalog**             | Existing `@v1-rc1` program identities | SilverScript compiler `v1.0.0`, `3ed97333`    | Purpose-built families enabled; other templates remain gated  | TimeLock, Inheritance, Last Will, and Escrow templates as compiled dumps, plus inspect-only templates. See [Covenants](/argon-docs/suresign/covenants.md).                                                                                                      |
| **KCC-0020**                     | `kcc-0020@draft-54f4f9c`              | `kaspanet/kccs` `54f4f9c`                     | Experimental                                                  | Create fixed-supply tokens, transfer, consolidate, change receive settings and use delegated receive for the exact qualified `enclave-kcc20-v1` program. Other programs are inspect-only; later minting, custom programs and administrative powers are refused. |
| **Community KCC20** (`kcc20-46`) | separate pack                         | Independently recomputed from live coins      | Experimental                                                  | Inspect only. Not decoded as KCC-0020.                                                                                                                                                                                                                          |
| **Igra**                         | kernel-owned                          | Contract addresses and selectors per provider | Consensus for the Kaspa side; Igra outcome tracked separately | Carriers, automatic Entry, Kat Bridge entry and exit, WiKAS, ERC-20 and ERC-721 transfers, INS, Kaskad, Lynx, Zealous Swap, Zealous staking.                                                                                                                    |
| **Deal Desk**                    | `kasia-1`                             | K-Kluster Kasia `acd3cf65`                    | Convention                                                    | Sealed messaging, handshakes, deal cards. See [Deal Desk protocol](/argon-docs/suresign/deal-desk-protocol.md).                                                                                                                                                 |
| **Messages**                     | KIP-5                                 | `kaspanet/kips` `0199f8d4`                    | Consensus hashing                                             | Personal message signing, with official vectors.                                                                                                                                                                                                                |

**Not shipped.** The Igra USDC mailbox pack (`igra-usdc-mailbox`) is an accepted design for predicting a user-bound Base contract that forwards USDC to this account on Igra. It is not a Base wallet and is not in the signed kernel yet. See the engineering ADR in the repository (`docs/adr/0020-igra-usdc-mailbox-onramp.md`).

Each pack's upstream commit, the date it was last verified, and its open uncertainties are recorded in the repository's upstream matrix; see [Developers → Upstream pins](/argon-docs/developers/upstream.md).

## Where packs come from

Packs are source code in `core/` and pinned artifacts in `protocols/`: compiled covenant dumps, ABIs, template hashes. They change only through a reviewed pull request and ship only in a signed release. There is no mechanism to add, update, or enable a pack at runtime, from a registry, or from a dApp.

A remote source may still contribute data a pack consumes: the covenant directory's name for a template hash, a token's logo, a collection's metadata. That data is labelled by its source on the plan and never changes what the pack will construct or sign.

## Indexed protocols

KRC-20, KRC-721, and KNS are **indexed protocols**: the inscription is on Kaspa, but which balances and names it produces is decided by an indexer replaying the protocol's rules. SureSign reconstructs the inscription payload itself and validates it against the pack, so what you sign is exact; but whether an indexer will *recognize* it is the indexer's business, and the plan says so with the note *Token balances are the token service's record, not Kaspa's own*. Enclave shows the Kaspa confirmation and the indexer's recognition as two separate facts, never one.

## Versioning

A pack's identity carries its upstream version. A transaction that matches a pack's family but not its pinned version is not decoded with the nearest version; it is refused, and the refusal names the version it saw. When a protocol updates, the pack is updated, its vectors extended, and a release ships the change.
