KCC-23: Convention for Binding Covenant Metadata to a Covenant ID

The idea is to define a convention for attaching descriptive metadata to a covenant at deployment.

For example, a KCC-20 token may declare:

{
  "name": "Example Token",
  "symbol": "EXT",
  "decimals": 8
}

KCC-23 uses tx.payload to carry this JSON.

Since Kaspa is prunable, the block containing this transaction would eventually no longer be available from regular nodes, and the metadata alone would no longer be verifiable.

KCC-23 harnesses KIP-20’s covenant ID genesis logic to bind the metadata to the covenant ID: the genesis transaction spends an output from the metadata transaction, making that transaction part of the covenant ID commitment.

The deployment transactions can then be preserved and shared off-chain, while still allowing anyone to verify the metadata against the covenant ID.

This allows a covenant to declare data and values that are not part of its on-chain verification logic, while still committing to them as part of the covenant’s identity.

2 Likes