saefstroem followed up on the ZK SDK pull request on June 20, saying the SDK had been updated to accommodate the latest feedback from Michael Sutton, Maxim, and IzioDev. (source)
This is PR #953 in rusty-kaspa. It is still open, so the article should treat it as review-stage work rather than a shipped release. The change is still worth covering because it moves the ZK SDK discussion from raw proof plumbing toward a builder API that normal protocol code can actually call. (PR #953)
The goal of the PR is to lower the knowledge requirement for UTXO-based ZK systems on Kaspa. Instead of making each protocol hand-build scripts around RISC Zero proofs and Kaspa opcodes, the PR introduces R0ScriptBuilder, a wrapper over ScriptBuilder that converts RISC Zero receipts into native Kaspa scripts. (PR #953)
The builder targets the lock-and-spend flow. The off-chain SDK generates a redeem script for locking a UTXO behind a RISC Zero proof and a signature script for spending it later. The PR supports both SuccinctReceipt and Groth16Receipt, with native Rust and WASM-facing APIs. (PR #953)
The design uses a typestate path: Unbounded to commit_to_groth16 or commit_to_succinct, then Bounded, then finalize_with_proof, then FinalizedR0Script with both sig_script and redeem_script. The point is to make the script-building sequence harder to misuse. A caller first commits to the proof system and image, then finalizes with the actual receipt and journal. (PR #953)
The PR body maps that design to a P2SH commit-and-reveal flow: commit, hash the redeemScript into a P2SH address, fund it, finalize, set the sigScript on the redeem transaction input, and submit. For Groth16, the redeem script reconstructs the RISC Zero ReceiptClaim digest from image_id and journal using raw opcodes and the fixed RISC Zero verification key. For Succinct, the commit path pushes the image id, control id, and hash function. (PR #953)
That is a real update from the earlier ZK SDK discussion. The previous story was about low-level proof builders and the need to prioritize reusable primitives. saefstroem said on June 16 that he accepted the SDK feedback and had an update nearly ready, with code documentation still being finalized. (source) Four days later, he linked the updated PR and said the feedback had been accommodated. (source)
The reason this matters is not that a builder class is glamorous. It is that ZK-on-Kaspa work has a usability problem if every application has to understand every opcode, proof encoding detail, and script construction step before it can even lock a UTXO behind a proof. R0ScriptBuilder is the kind of SDK surface that can turn protocol research into repeatable application code. (PR #953)
The careful wording stays important. PR #953 is open, has review activity, and should not be written as merged code. The publishable claim is that the ZK SDK branch has been updated after review feedback, and its current shape is a higher-level RISC Zero script builder for proof-backed Kaspa UTXO flows. (source) (PR #953)
All sources link to public messages in the Kaspa Core R&D (public) Telegram channel.
