Framework
ZKP
Zero-knowledge proof primitives for the secp256k1 curve — adaptor signatures, range proofs, surjection proofs, and MuSig2 half-aggregation — layered on Blockstream’s secp256k1-zkp fork of libsecp256k1.
Mentioned In
Overview
ZKP wraps the BlockstreamResearch/secp256k1-zkp fork of upstream bitcoin-core/secp256k1. The fork adds zero-knowledge proof primitives that the upstream library deliberately scopes out: range proofs (Confidential Transactions), surjection proofs (asset-swap unlinkability), ECDSA and BIP-340 adaptor signatures (atomic swaps and scriptless scripts), MuSig2 half-aggregation, and Bulletproofs++ (bppp trait). Blockstream’s Liquid Network — the canonical consumer — depends on the fork for its confidential-asset transaction format.
ZKP shares the same vanilla cryptographic surface as P256K via the package’s SharedSourcesPlugin build-tool plugin: every type in Sources/Shared/ (ECDSA, BIP-340 Schnorr, BIP-327 MuSig2, ECDH, recoverable signatures, SHA-256, tagged hashes) is compiled into both products. The two products differ only in their underlying C library (libsecp256k1 vs libsecp256k1_zkp) and the set of opt-in traits each enables. Read Choosing Between P256K and ZKP to decide which product fits your application.
Note
The ZKP-exclusive zero-knowledge surface is C-only at present — Swift wrappers for range proofs, surjection proofs, adaptor signatures, and MuSig2 half-aggregation will be added incrementally. The shared surface listed below is fully supported today.
Topics
Essentials
ECDSA
BIP-340 Schnorr
BIP-327 MuSig2
Recoverable signatures
ECDH key agreement
Hashing
Errors
Protocols
Structures
Type Aliases
Enumerations
Extended Modules