Toccata 101 · Part 0 · card 1
Since 30 June 2026, the program on a Kaspa output can read the whole transaction spending it and refuse. Money can be locked, released, split or handed over under conditions.
Every UTXO carries a script public key, a small program that decides what a spending transaction must show. Before Toccata that program could check a signature or a hash, so almost everything on Kaspa was one wallet paying another. Crescendo let it read its own transaction: the inputs and outputs, their amounts and their addresses. It still could not keep anything from one spend to the next, and it could not carry an identity across spends.
Toccata made that program general. It can read the whole transaction, keep state from one spend to the next, carry an identity across its whole life, and refuse the spend when its conditions are not met. Every node runs it before the transaction is accepted. A UTXO locked this way is a covenant. That opens options for what Layer 1 coins and assets can do.
Since Toccata, a program travels with the money, KAS coins and L1 assets alike. Every node runs it and refuses the spend if its conditions are not met.
| What the program can do | Before Crescendo | Crescendo | Toccata |
|---|---|---|---|
| Check a signature | yes | yes | yes |
| Read its own transaction | no | part | yes |
| Keep state between spends | no | no | yes |
| Carry an identity across spends | no | no | yes |
Things you could only do through an exchange or a custodian, like lock savings until a date, leave coins to someone if you disappear, trade one asset for another with a stranger and much more, can now be done with your own keys and a transaction fee.
Open this transaction in an explorer: f378111b…a063fa, from 8 September 2026. Its first input is not an ordinary address but a script of 2,732 bytes, and the explorer marks the transaction as a covenant carrying on, one output in, one output out.
Toccata is the hardfork that activated general covenants on Kaspa mainnet: KIP-17 (full transaction introspection, byte-string operations, signature checks over arbitrary data, the ZK opcode), KIP-20 (covenant identifiers), KIP-21 (partitioned sequencing commitments) and KIP-16 (zero-knowledge proof verification). The first, narrow introspection opcodes, KIP-10, were already live since Crescendo (May 2025). Toccata activated at a fixed DAA score on 30 June 2026. Node release v2.0.0 (5 June 2026) was the activation release. The KIP texts are at github.com/kaspanet/kips.