TN12 is the public Covenants++ testnet for Kaspa. It is the primary environment for testing Silverscript contracts, covenant operations, and ZK proof verification before mainnet launch.
TN12 Overview
| Property | Value |
|---|---|
| Name | Testnet-12 (TN12) |
| Launched | January 5, 2026 |
| Last Reset | February 9, 2026 |
| Block Rate | 10 BPS |
| Consensus | DagKnight |
| Purpose | Covenants++ feature testing |
What Is Live on TN12
The February 9 reset introduced significant new features:
| Feature | KIP | Status |
|---|---|---|
| Covenant IDs | KIP-20 | Active |
| Blake3 Sequencing Commitment | KIP-21 | Active (OpChainblockSeqCommit, opcode 0xd4) |
| ZK Verify Precompiles | KIP-16 | Active (Groth16 + RISC Zero) |
| Extended Covenant Opcodes | KIP-17 | Active (Auth/Cov binding) |
| Transaction Introspection | KIP-10 | Active |
| Silverscript Compiler | – | Experimental |
| Native Asset Testing | – | Active |
Covenant ID Opcodes
| Opcode | Code | Description |
|---|---|---|
OpInputCovenantId |
0xcf |
Get covenant ID of an input |
OpCovOutputCount |
0xd0 |
Count outputs with same covenant ID |
OpCovOutputIndex |
0xd1 |
Get index of covenant output |
OpAuthOutputCount |
0xd2 |
Count auth-bound outputs |
OpAuthOutputIndex |
0xd3 |
Get index of auth-bound output |
OpChainblockSeqCommit |
0xd4 |
Blake3 sequencing commitment |
Connecting to TN12
Run a TN12 Node
# Clone rusty-kaspa (Kaspa's Rust node)
git clone https://github.com/kaspanet/rusty-kaspa.git
cd rusty-kaspa
# Checkout the covpp branch
git checkout covpp
# Build
cargo build --release
# Run a TN12 node
cargo run --release --bin kaspad -- --testnet
Connect a vProgs Node to TN12
cd vprogs
cargo run --release --bin vprogs-node -- --testnet --kaspad-address 127.0.0.1:16311
Default TN12 Ports
| Service | Port |
|---|---|
| gRPC | 16310 |
| P2P | 16311 |
| wRPC (Borsh) | 17310 |
| wRPC (JSON) | 18310 |
Getting Test KAS
Faucet
[Coming Soon] A web faucet for TN12 is planned. In the meantime, mine testnet coins directly.
Mining on TN12
You can mine test KAS by running a CPU miner against your TN12 node:
# Using the built-in miner (from rusty-kaspa)
cargo run --release --bin kaspad -- --testnet --utxoindex --mining-address kaspatest:qr...
Replace kaspatest:qr... with your testnet address.
Submitting Transactions
Using kaspa-cli
[Coming Soon] CLI transaction tooling is under development.
Using RPC Directly
# Submit a raw transaction via gRPC
grpcurl -plaintext localhost:16310 protowire.RPC/SubmitTransaction \
-d '{"transaction": {...}}'
Using Silverscript
# Compile and deploy a covenant
silverscript compile vault.ss --output vault.script
# [Coming Soon] Deploy to TN12
silverscript deploy vault.script --network testnet
Block Explorer
[Coming Soon] A TN12 block explorer with covenant and ZK proof visibility is planned. For now, you can query the node directly via RPC.
Useful RPC Queries
# Get current DAA score (block height proxy)
grpcurl -plaintext localhost:16310 protowire.RPC/GetBlockDagInfo
# Get UTXO set for an address
grpcurl -plaintext localhost:16310 protowire.RPC/GetUtxosByAddresses \
-d '{"addresses": ["kaspatest:qr..."]}'
# Get block by hash
grpcurl -plaintext localhost:16310 protowire.RPC/GetBlock \
-d '{"hash": "...", "includeTransactions": true}'
ZK Proof Testing
TN12 supports two ZK verification backends:
Groth16
- Used with Noir inline ZK covenants
- Tiny proof size
- Sub-second verification on L1
RISC Zero
- Used for based ZK applications
- Larger proof size (STARK-based)
- Supports general-purpose computation
Testing a ZK Proof
# [Coming Soon] -- Full ZK testing workflow
# 1. Generate a proof locally
# 2. Construct a transaction with the proof in the script sig
# 3. Submit via RPC
# 4. Check verification status
For a working ZK covenant example, see the ZK Covenant Rollup PoC by Maxim Biryukov.
Known Limitations
| Limitation | Description |
|---|---|
| Experimental | TN12 may be reset at any time; do not rely on persistent state |
| No faucet | Must mine test KAS directly |
| Silverscript unstable | Compiler API and syntax may change |
| No deployment CLI | Contract deployment requires manual transaction construction |
| No block explorer | Must use RPC for chain queries |
| ZK proofs manual | No integrated proving toolchain yet |
| Single-node testing | Multi-node testnet clusters require manual setup |
Testnet vs. Mainnet Timeline
| Milestone | Target |
|---|---|
| TN12 active (covenant testing) | Now |
| Covenants++ hard fork (mainnet) | May 5, 2026 |
| Silverscript mainnet readiness | May 2026+ |
| vProgs Phase 1 (standalone) | TBD |
| vProgs Phase 2 (syncompo) | TBD |
Troubleshooting
Node fails to sync:
Ensure you are on the covpp branch of rusty-kaspa. The mainnet branch does not support TN12 features.
Transaction rejected:
Check that your transaction uses valid TN12 opcodes. Opcodes from the Covenants++ set (0xcf-0xd4) are only valid on TN12 until the mainnet hard fork.
ZK proof verification fails: Ensure your proof was generated with the correct verification parameters. Groth16 and RISC Zero use different proof formats.
Related Resources
- Quickstart – Build from source and deploy your first contract
- Dev Environment Setup – Configure toolchains for TN12 development
- API Reference – RPC endpoints for TN12 interaction
- ZK Covenant Rollup PoC – Working ZK example on TN12