Back
KASPA.NEWS Articles
Kaspa Core R&D Channel

A Masterpiece and a Freeze

Wednesday, April 22, 2026

Kaspa ($KAS) core R&D - what developers discussed, debated, and shipped. Apr 12-22, 2026.

KIP-21 Lands and Sutton Calls It "a Masterpiece"

The biggest merge of the month dropped on April 20. Michael Sutton approved and merged PR #943 by Maxim Biryukov, the full KIP-21 implementation, and did not hold back: "Truly a masterpiece." (source) (PR #943)

The merge also brought several crates to no_std, including kaspa_hashes, which Sutton flagged specifically for IzioDev to note. (source) A couple of final sequencing commitment hash tweaks went in before the merge, making the current code the ground truth for hashing. (source)

Once the dust settles, Sutton wants to rename the covpp-reset2 branch to toccata, the name that will carry through to mainnet. (source)

Feature Freeze Declared for Consensus Changes

Sutton posted a feature freeze update on April 16, clarifying that the freeze applies to consensus features and changes, not to code in general. (source) The final components before the freeze: completing the KIP-21 review, merging PR #957 by Saefstroem for upstream RISC Zero fixes, and enabling gas commitments with a per-subnet block limit as a small focused follow-up after KIP-21. (source) (PR #957)

Alongside the freeze announcement, Sutton published a gist proposing a standard minimum fee increase to enable STARK-sized blocks on mainnet, plus longer-term thoughts on block elasticity. (source)

The Min Fee Debate: 100 Sompi Per Gram

The proposed fee increase from 1 to 100 sompi per gram sparked a multi-day discussion. Sutton's motivation was practical: he feels uncomfortable doubling the transient storage requirements at the current minimum fee. (source)

coderofstuff probed the rigor behind the number and extracted that 100 is "workable" rather than derived from a precise model. (source) He also ran the spam economics: at 5 KAS drain per second, a spammer with a 10k budget runs out in roughly 30 minutes. (source) The practical concern is wallet support — wallets that use the shortcut 0.0001 x count(UTXOs) for minimum fees will break under the new figure. (source)

Ross Ku raised a longer-term worry: if KAS exceeds ~$0.30, fees at 100 sompi/gram could surpass Solana's, which matters if Kaspa wants to capture micropayment and AI agent flows. (source) Ori pushed back on framing, noting the min fee is a miner policy setting that can be adjusted without a hard fork, and that Kaspa should not necessarily compete to be the cheapest chain in crypto while subsidizing fees through inflation. (source) (source)

Covenant UTXO Indexing Takes Shape

Sutton proposed extending the UTXO index to support queries by covenant ID, using a key structure of prefix | covenant_id | spk | outpoint. (source) The idea would let network actors retrieve UTXOs by covenant without trusting an external source for the full UTXO-plus-state bundle. (source)

Ori argued for a hierarchical approach: add cheap covenant-based indexing to the node first for simple cases, then let a more complete external indexer build on top. (source) The discussion surfaced a key architectural distinction. In verification mode, the user provides new states explicitly and the script validates them. In transition mode, the script computes new states at runtime. (source) Global indexing works for verification-mode covenants, but transition-mode covenants will need their own indexers with access to the contract code. (source)

Sutton's bottom line: "I tend to think we should not limit things by our own imagination. I think adding this covenant-based indexing to the utxo index is cheap enough and most likely valuable enough to be worth it." (source)

Silverscript Gets Covenant Debugging and Cleaner Syntax

Ori recreated covenant debugging support on top of the new Silverscript compiler architecture. PR #104 adds transaction definitions to .test.json, parses previous and next states, and injects covenant context at runtime. (source) (PR #104) Manyfestation separately shipped struct and state argument support in the CLI debugger via PR #76. (source) (PR #76)

On the language side, Ori changed x.push(a) to x = x.append(a) in PR #107, arguing it better reflects what happens under the hood — no mutation of the old stack element, just assignment to a new one — and is more flexible since it allows expressions like y = x.append(a). (source) (PR #107)

ZK SDK Races the Feature Freeze

Saefstroem posted that the ZK SDK in PR #953 is ready for review and needs to merge before the feature freeze since it's a breaking change. (source) (source) (PR #953) But first, an upstream RISC Zero fix in PR #957 had to land. (source)

Meanwhile, Roman M described a ZK proof-of-concept in progress: a two-part proof system where the first proof handles state transitions and the second verifies the first while proving anchoring to the sequencing commitment for all transactions used. His target: 1,000 TPS. (source)

Protobuf Zero-Value Bug Fixed

Guy Fawkes found a bug in the RPC transaction conversion code where Some(0) for compute_budget and sig_op_count fields was rejected as invalid. This is exactly what gRPC protobuf deserialization produces for zero values, breaking GetVirtualChainFromBlockV2 for any received transaction. PR #958 fixes it. (source) (PR #958)

Sutton asked whether enforcing the invariant with NonZeroU8/NonZeroU16 types would be cleaner than a runtime check, but acknowledged it would be a larger change touching every callsite. (source)

Bridge Goes Desktop, and the Repo Question Returns

Jastar13 shared screenshots of a desktop GUI for the mining bridge and asked for UI feedback. (source) coderofstuff responded with a structural suggestion: keep only core bridge components in the rusty-kaspa repo and externalize the GUI, packaging, and further enhancements. (source) The reasoning is that the bridge is becoming its own product. Externalizing it would unblock faster releases without bottlenecking on RK maintainer reviews, and let the community drive UI decisions directly. (source)

Apple Silicon Build Breaks, Gets Patched

Saefstroem reported that the covpp-reset2 branch no longer compiled on Apple Silicon after the KIP-21 merge. (source) The culprit was the upstream workflow-perf-monitor crate, where Apple SDK changes broke the generated bindings. (source) Saefstroem filed a fix against the upstream repo and, since the maintainer hadn't responded, the crate was forked under the kaspanet GitHub org to unblock development. (source) (source)


All sources link to public messages in the Kaspa Core R&D (public) Telegram channel.

More Kaspa Articles