Covenants
A transaction output can carry rules about how it may later be spent. Vaults, escrow, spending caps, refunds. KIP-17.
Primitives and products
The most common reading of Toccata is that Kaspa can suddenly do everything. That is not what happened. Toccata added a small set of rules to what a Kaspa transaction is allowed to say about its own outputs. Turning those rules into something a person can use is a separate job, and most of it is not finished.
Here is the shape of it. Shipping a consensus primitive is like shipping a new instruction in a processor. The instruction is real the moment the chip ships, and it is also useless to almost everyone. Somebody still has to write a compiler that emits it, a debugger that steps through it, libraries that wrap it, and enough shared convention that two teams using it can read each other's output. Toccata shipped the instructions on June 30. July was spent on the toolchain.
The primitives
Four things, and they are worth naming precisely because the vague version of this list is where the overclaiming starts.
A transaction output can carry rules about how it may later be spent. Vaults, escrow, spending caps, refunds. KIP-17.
Consensus tracks a 32-byte identifier on a UTXO, so a covenant keeps an identity as it moves. KIP-20.
A script can check a zero-knowledge proof. It proves a statement about chosen inputs, and nothing about the outside world. KIP-16.
Lane-local ordering an application can prove against, without proving over all network activity. KIP-21.
That is the whole activated surface. No virtual machine, no accounts, no global shared state, no contract deployment step. A covenant is a rule attached to coins. Nothing sits at an address waiting to be called.
The missing middle
Each row is a real dependency. The status column records what could be verified on July 25, 2026, and excludes anything merely announced.
| Piece | What it does | Where it is |
|---|---|---|
| A language | Covenant scripts are compiler output, the way machine code is. SilverScript is the language that produces them. | Experimental Took a breaking change on July 12, after mainnet activation. |
| A framework | A language gives you one covenant. Real apps are several covenants that have to agree. Argent models that as actors with state and transitions, then generates the SilverScript. | Prototype 31 commits in July. No audit, no release, breaking changes still landing. |
| Shared conventions | If your token and my wallet disagree about byte layout, neither works with the other. KCCs are where that gets agreed. | Proposed Process opened July 15. Five specs, none adopted. |
| An index | To show someone their tokens you must find every UTXO carrying a covenant ID. Nodes do not answer that question today. | Missing No getUtxosByCovenantId RPC. Called planned on the forum. No code. |
| Explorers | Someone has to be able to look at a covenant and see what it is. | Missing Block explorers do not decode covenant data. One third-party indexer, kascov, does. |
| Wallets | A user needs to sign a covenant-constructing transaction without understanding any of this. | Missing No verified covenant-signing support in any major Kaspa wallet. |
| SDKs | Bindings so an ordinary application can build these transactions. | Prerelease kaspa-python-sdk v2.0.2.rc1, published July 23. |
Four of those seven are the reason mainnet holds 80 active covenants worth 253.98 KAS while Testnet-10 holds 491,663. The primitives are equally available on both. Only one of them is a place where the missing pieces do not matter yet.
Where the arguing happens
Conventions cannot be decided by a protocol upgrade, because they are agreements between people who ship independent software. That work is happening in the open at kas-smiths.org, alongside the public Core R&D Telegram group. Reading it is the fastest way to see what is genuinely unsettled.
Three live examples, all from July. The token standard draft, KCC-0020, has an open disagreement about whether token metadata belongs inside the spec or in a sibling one. Michael Sutton raised open Inter-Covenant Communication, a way for separately written covenants to constrain each other inside one transaction, which changes what a token standard has to leave room for. And a builder asked for a covenant-ID lookup RPC and was told it is planned, which is how you learn that a piece is missing.
Treat everything found there as proposal-stage by default. A thread with a confident name is still a thread. The test is whether it has a merged KIP for consensus changes, or a merged KCC for conventions, and right now the KCC index is empty.
Checkpoints
Five things you can check yourself, none of which require trusting an announcement.
Until several of those are true, statements about Kaspa having applications are describing Testnet-10, an offline demo, or a layer two. The activation was real, the rules are in force, and the interesting part is not finished. Both halves of that are worth saying at the same time.
Primary references: KIP-16, KIP-17, KIP-20, KIP-21, kaspanet/kccs, Argent, SilverScript, Kas Smiths, kascov, and the Toccata operator guide.