← Back to home

zk-btc-sdk

zk-btc-sdk: Plug-and-play dev tool to compile, deploy & verify ZK proofs on Bitcoin EVM chains.

Problem Statement

zk-btc-sdk is a plug-and-play developer tool that makes it effortless to bring Zero-Knowledge Proofs (ZKPs) to Bitcoin-based EVM chains.Traditionally, building ZK-powered applications is painful and time-consuming. Developers need to:Write complex Solidity contracts containing cryptographic verification logic.Manually compile Circom circuits into .wasm, .zkey, and verifier contracts.Deploy contracts to multiple chains with custom tooling.Interact with verifiers using raw ABI and contract addresses.zk-btc-sdk abstracts away all of this complexity into a seamless CLI + SDK workflow. With just three simple commands, developers can:Compile Circuits zk-btc-sdk compile circuit.circom → Outputs .wasm, .zkey, and verifier.sol.Test Circuits before deploying zk-btc-sdk test circuit input.json → Tests the circuit using input in input.json and files generated while compiling → Runs groth16 for provided input & locally verifies itDeploy Verifier Contracts zk-btc-sdk deploy <path-to-generated-folder> <PVT_KEY> --rootstock zk-btc-sdk deploy <path-to-generated-folder> <PVT_KEY> --citrea → One command deployment to Bitcoin EVM chains with no manual setup.Verify Proofs Automatically verifyProof() function → Automatically generates a proof, extracts public signals, and calls the deployed verifier — no ABI or address needed.Why zk-btc-sdk?Plug-and-play: Developers skip weeks of boilerplate and infra setup.Multi-chain support: Works across Bitcoin EVM L2s with a single flag.Abstracted complexity: Proof generation, key setup, and verification are handled internally.Developer-first: Designed as an SDK + CLI that integrates easily into any project.Tech StackCircom for ZK circuit definition.SnarkJS for Groth16 setup, proof generation, and verification keys.Solidity for verifier contracts.Node.js CLI/SDK for plug-and-play developer experience.Citrea & Rootstock for Bitcoin EVM chain deployment.Utility & Use CasesIdentity & Privacy → Prove your age, citizenship, or credentials without revealing private data. DeFi Compliance → Add KYC/AML checks via ZK proofs, ensuring regulatory compliance while preserving user privacy. Gaming & Reputation → Verify player stats, achievements, or credentials without leaking sensitive info. Cross-chain Bridges → Use ZKPs to prove events across Bitcoin and EVM chains securely.Instead of spending weeks learning elliptic curve math, smart contract verification, or blockchain deployment, a developer can now integrate real ZK-powered features in minutes.Vision zk-btc-sdk aims to be the Hardhat for Zero-Knowledge : a simple, developer-friendly toolkit that makes ZK applications accessible on Bitcoin’s growing EVM ecosystem.By lowering the barrier to entry, zk-btc-sdk enables developers to build privacy-preserving dApps, identity solutions, compliance tools, and more — on the most secure blockchain base layer: Bitcoin.

Solution

zk-btc-sdk is built as a Node.js CLI + SDK that abstracts the entire Zero-Knowledge development workflow into three simple commands: compile, deploy, and verify.At its core, it integrates several technologies:Circom - used to define the ZK circuits. When a developer runs zk-btc-sdk compile, we invoke Circom to generate the .r1cs constraint system, .wasm witness generator, and intermediate artifacts.SnarkJS (Groth16) - we run the trusted setup, generate proving/verification keys, and output the .zkey file. SnarkJS also powers proof generation and extraction of public signals during the verify step.Solidity Verifiers - we export verifier.sol directly from SnarkJS and package it as a deployable contract. Instead of requiring developers to manage ABI and contract addresses, our SDK handles it internally.Bitcoin EVM Deployment - for deployment, the CLI integrates with RPC endpoints of Rootstock, Citrea, and Botanix. A simple flag like --rootstock chooses the correct chain configuration. We automated the deployment so a verifier contract can go live in one command, using the developer’s private key.Proof Verification Abstraction - when a developer runs zk-btc-sdk verify input.json, the SDK automatically: Generates a proof with the .wasm and .zkey.Extracts public signals.Calls the deployed verifier contract.Returns a clean true/false response without exposing ABIs, addresses, or calldata.Hacky / Notable Engineering BitsWe containerized Circom + SnarkJS inside the SDK so developers don’t need to install them manually. This “batteries-included” approach makes zk-btc-sdk plug-and-play.Deployment is designed to work even if the dev has no Web3 knowledge : no ABI handling, no gas management, no contract addresses exposed.We added a --chain flag system (--rootstock, --citrea, --botanix) to make cross-chain deployments as simple as toggling one option.All cryptographic complexity (pairings, elliptic curves, Groth16 details) is fully hidden — the SDK ensures that the dev never touches math or blockchain internals.Partner Tech BenefitsBitcoin EVM chains (Rootstock, Citrea, Botanix) → provided the execution layer for Solidity verifiers, letting us prove that ZK on Bitcoin is possible.Node.js ecosystem → gave us the tooling to package everything into a CLI that feels natural for developers.Circom + SnarkJS → enabled fast prototyping with Groth16 proofs without needing to implement cryptography from scratch.

Hackathon

ETHGlobal New Delhi

2025

Prizes

  • 🏆

    Freestyle Track

    Rootstock

Contributors