subscribe

What is KCC1? It is not Kaspa's token standard, it is the vocabulary under it, and both are final since 21 October 2026.

Update 21 October 2026. KCC-1, KCC-2 and the fungible token standard KCC-20 advanced to Final in the kaspanet/kccs repository on 21 October 2026, source the repository's commit history. The analysis below describes the state on 14 August 2026 and stays dated, so you can see how the standard got there.
Coins are already being minted against something called KCC1, so far on testnet only. The trouble is that two different efforts used that name for two different things. Here is what each one actually defines, where each stands, and why a token standard on a UTXO chain is genuinely harder than on an account-based chain.
The short answer

In the specification repository, KCC1 is the vocabulary, not the token. KCC-0001 defines shared terminology, byte layouts and calling conventions for covenants on Kaspa, and contains no token logic at all. The fungible token standard is a separate specification, KCC-0020. Both advanced to Final in the kaspanet/kccs repository on 21 October 2026, together with KCC-2 for authority schemes. Separately, at least one project uses the name KCC1 for its own proposed token standard, which is a different thing again. That collision is covered below.

Status of the token standard · checked 27 october 2026
final
KCC-1, KCC-2 and KCC-20 advanced to Final in the kaspanet/kccs repository on 21 october 2026
KCC-0001
the covenant vocabulary · final since 21 october 2026
KCC-0020
fungible tokens · final since 21 october 2026
at least 3
competing or overlapping token proposals in play
This page reads the public specification repository and the review discussions on it. Everything below can be checked in the same place. We link the sources at the end, and we date the status because it will change.

What KCC-0001 actually defines

In the author's own words, the specification "defines common terminology, byte layouts, and application binary interface conventions for covenants on Kaspa." Concretely, it covers the following.

Two sentences from the proposal matter more than the list. "KCC1 is independent of any source language, compiler, framework, or artifact format." And "It does not change consensus rules." This is not a protocol upgrade and it is not a token. It is an agreement on what words and byte layouts mean, so that later specifications can use them without redefining them.

Why that agreement is the hard part

On an account-based chain a token works because every contract is a global object with a stable interface. You call transfer and the contract handles the rest internally. On a UTXO chain there is no global object. A covenant is a rule attached to a coin, and every state transition has to be constructed and proven inside the transaction itself. Before anyone can write "the token standard," the ecosystem first has to agree on how a covenant's state is laid out in bytes, how you address a piece of it, and how you identify the same contract across two spends. That agreement is KCC-0001.

The proposals in play

This is the part almost nobody sees, and it is the reason "is my token compatible?" still has no clean answer.

ProposalWhat it coversStatus as of 14 aug 2026
KCC-0001covenant terminology, byte layouts, ABI. the base everything else builds onopen, review required, no approving review
KCC-0020fungible token covenants. the actual token standardopen, review requested from two maintainers
KCC-0008a multi-token standard covering fungible, non-fungible and mixed profilessubmitted, its author is asking to converge with KCC-0020
KCC20V2an implementation already shipped by KaspaComcompatibility with the drafts is an open question in its own tracker

One reviewer on KCC-0008 puts the stakes plainly. The goal is "a single unified standard that prevents the fragmentation other ecosystems experienced." That fragmentation is not hypothetical here. There are at least three overlapping token proposals plus one shipped implementation, and the base vocabulary they all depend on is itself unmerged.

"I think this should be reviewed once KCC-0001 is merged, or at least in light of it."

Michael Sutton, Kaspa core contributor, on the fungible token proposal

The name collision

There is a second kind of fragmentation running underneath the first one, and it has nothing to do with code.

In the specification repository, KCC-0001 is explicitly not a token standard. Its own text states that it is "independent of any source language, compiler, framework, or artifact format" and that it "does not change consensus rules." The authors abbreviate it KCC1 throughout.

In August 2026, the team behind KaspaKaha described their work in the official Kaspa Telegram as "KCC1 is our proposed token standard for Kaspa". In the same thread they were clear about its status, calling it "a proposal, not a launch", running on testnet-10 only, with no mainnet deployment yet.

So the same four characters point at two different things. A byte-layout and vocabulary specification on one side, a proposed token standard on the other. Nobody involved is hiding anything, and both efforts are open about what they are. But if you have been trying to work out what KCC1 means and getting contradictory answers, that is the reason.

Why a name is not a small problem

The same thread contained the substantive version of this argument. One community member asked whether a proposal should not first go to the shared forum, have its trade-offs debated and converge on a common standard before a new one appears, warning that the ecosystem risks repeating an earlier episode where several competing standards fragmented it instead of converging. The reply was that a working reference on testnet, with tools that actually run, is easier to converge around than a specification on paper.

Both positions are reasonable and both argue for the same outcome, which is one standard rather than four. A naming collision works directly against that outcome, because two groups can agree on every technical point and still spend months talking past each other about which document they mean.

Why this is taking so long

The most common complaint in Kaspa communities these days is that the token standard is slow. The review discussion contains the real answer, and it is more interesting than "developers are slow."

Kaspa is verification-focused, not execution-focused

On an account-based chain, a contract sits on chain as a global object with persistent state. It can hide its implementation behind a stable callable interface, so a wallet building a transaction needs to know almost nothing about the contract's internals. Kaspa's layer 1 does not work that way. As Michael Sutton describes it in the review, the entire transition and verification logic must be supplied in each transaction, which means the transaction builder has to know every detail of how that specific token works.

The reader and writer problem

This produces a very concrete failure mode, raised by an implementer during review. A specification that describes state layout and template bytes is enough for a reader. An explorer or a wallet can look at a UTXO and correctly recognise "this is a token, this is the balance." It is not enough for a writer. An independent wallet that wants to construct a transfer also needs the witness framing, the entrypoint selectors, the input and output ordering, the compatibility rules and the practical mass limits. Without an exact recipe, a wallet can display your token but cannot safely spend it.

That gap is the difference between "a token exists on chain" and "every wallet supports it," and it is why the standard cannot simply be declared finished.

Two design questions still genuinely open

Reviewers flagged issues that will affect anyone using these tokens, not just the people writing them. There is still no canonical type for a script public key, which means every protocol invents its own encoding for something as basic as a pinned destination address. One reviewer notes that cross-covenant interoperability "dies at the first pinned address" if this is not fixed. And the default hash function was changed from blake2b to blake3 during the review, after conformance vectors had already been tested against the earlier revision. This is a draft that is still moving.

What already runs on chain

None of the above means the work is theoretical. Two independent implementers reported production measurements during review, and the numbers are worth knowing.

2,561
hash-verified KCC20 token reveals processed by one independent indexer, with zero mismatches against the draft's splice-and-hash pattern
since early july 2026
hand-written covenants running on mainnet in a tipping application in production, including time-locked escrow and keyless refund paths
867,456
spent covenant signature scripts scanned on testnet-10 looking for the draft's proposed dispatch tag shape
zero
matches found. nothing on chain uses the tag format the specification proposes, so there is no legacy shape to preserve

Read together, those four figures say something precise. The encoding works. Thousands of real reveals verify against it without a single mismatch. But the conventions the specification proposes are not yet what the chain actually does. The standard is describing where the ecosystem is going, not where it already is.

One practical constraint worth knowing

Kaspa's storage mass rules put a practical value floor of roughly 0.1 KAS on a standard output. Every covenant state transition creates an output, so that floor applies to every transition and sets a hard minimum on how small a token instance can be. An implementer flagged this as becoming acute for token covenants specifically, "where many small instances are the natural shape." If you ever wonder why dust-sized on-chain token positions behave strangely, this is why.

Three traps in reading "KCC1 token"

1. KCC1 is not the token standard

It is the byte-layout and vocabulary specification underneath one. If a project describes its token as "KCC1", that describes the encoding conventions it follows, not a ratified token standard. The token standard it is presumably aiming at is KCC-0020, and that is a different document with a different author.

2. "Canonical" does not mean "final"

The word appears in announcements and reads like a stamp of approval. In practice it means conforming to a proposed layout in an unmerged draft that has changed during review. That is not an accusation against anyone. Building against a draft is completely normal in open protocol development, and early implementers are exactly the people who produce the production feedback that improves a specification. It does mean the word carries less weight than it sounds like it does. It is also worth checking which network an announcement refers to, because at the time of writing the KCC1 token work runs on testnet-10 and not on mainnet.

3. A specification is not an implementation

Reading KCC-0001 tells you how bytes are meant to be arranged. It tells you nothing about whether any particular contract is correct, whether its author can change the rules later, or whether the pool you are trading against is honest. Those are separate questions and they are not answered anywhere in the repository.

What we watch from here

First approving review
KCC-0001 needs one review from a maintainer with write access before it can merge. that is the gate everything else waits behind
Convergence or fragmentation
whether KCC-0008 and KCC-0020 merge into one standard, or the ecosystem ends up with several
A writer recipe
whether the final descriptor carries enough for an independent wallet to construct a transfer, not merely recognise one
Wallet adoption
the honest test. a standard is ratified when wallets you did not write can spend a token you did not issue
Sources, all public. The base specification is pull request 3 and the fungible token specification is pull request 2, both in the kaspanet/kccs repository on GitHub, together with their review threads. Status figures on this page were read on 14 august 2026 and will change, so check the repository before relying on them. We report what the documents say, never what we think the people behind them intend.
Related reading on this site, how smart contracts actually work on Kaspa, which explains covenants and the Argent language, and the weekly on-chain numbers on the Kaspa Pulse dashboard.

Questions people ask

What is KCC1 on Kaspa?

KCC1, formally KCC-0001, is a proposed specification that defines common terminology, byte layouts and application binary interface conventions for covenants on Kaspa. It defines canonical state and argument codecs, entrypoints and dispatch tags, the P2SH envelope of a covenant program, covenant state and templates, Covenant ID lineage, leader and delegator roles, and virtual elements. It is independent of any source language or compiler and does not change consensus rules. It is not a token standard.

Is KCC1 the Kaspa token standard?

In the kaspanet/kccs specification repository, no. KCC-0001 is the shared vocabulary and byte layout specification that token standards build on, and the fungible token standard there is a separate proposal called KCC-0020. Confusingly, at least one project uses the name KCC1 for its own proposed token standard, which is a different document. The same abbreviation points at two different things.

Is the Kaspa token standard finished?

Yes, since 21 October 2026. KCC-1, KCC-2 and the fungible token standard KCC-20 advanced to Final in the kaspanet/kccs repository on that day. A finalized KCC marks a point the ecosystem converges on, it does not change consensus rules, and each wallet still has to add support.

Why is a token standard harder on a UTXO chain like Kaspa?

On an account-based chain a contract is a global object with persistent state and a stable callable interface, so a wallet building a transaction needs to know little about its internals. Kaspa's layer 1 is UTXO based and verification focused, so the full state transition and verification logic must be supplied inside every transaction. That means the transaction builder needs to know the specific details of each token implementation, which is why the specification also needs an exact writer recipe and not only a state layout.

How many Kaspa token proposals are there?

As of August 2026 there are at least three overlapping proposals plus one shipped implementation. KCC-0020 covers fungible token covenants, KCC-0008 proposes a unified multi-token standard covering fungible, non-fungible and mixed profiles, and KaspaCom has an implementation called KCC20V2 whose compatibility with the drafts is being clarified in its own tracker. All of them depend on the base specification KCC-0001, which is itself unmerged.

Is KCC1 active on Kaspa mainnet?

Not as of August 2026. The team behind the KCC1 token work stated in the official Kaspa Telegram that it is a proposal rather than a launch, running on testnet-10 only, with no mainnet deployment yet. The underlying specifications in the kaspanet/kccs repository are also still open pull requests without an approving review.

Can any wallet support a KCC20 token?

Not automatically. A specification describing state layout and template bytes is enough for a reader, so an explorer or wallet can recognise a token and display a balance. Constructing a transfer additionally requires witness framing, entrypoint selectors, input and output ordering, compatibility rules and practical mass limits. Without that exact recipe an independent wallet can display a token but cannot safely spend it.

Building on Kaspa? We review projects and run testnet load tests before launch.

free · one email to confirm
get the 8 kaspa numbers whales watch
the 8 numbers whales watch and how to read each one · plus the weekly pulse every monday, including what moved in the covenant and token stack
free · unsubscribe anytime · cheat sheet delivered after email confirmation
free · wallet alerts
the chain, watched for you
the entity x wallet and the reward cuts get checked several times a day, and a post goes to discord when a check finds a move. plus the monday numbers and a place to request the data you're missing.
join the kaspa pulse discord
one click, no email · alerts land in #entity-x-alerts

follow kaspa pulse