Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions data/topics/secp256k1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: 'secp256k1'
summary: 'The elliptic curve Bitcoin uses for public keys, ECDSA signatures, and BIP 340 Schnorr signatures.'
category: 'Bitcoin'
aliases: ['secp 256k1', 'curve secp256k1']
---

`secp256k1` is the elliptic curve Bitcoin uses for its public-key cryptography. Every standard Bitcoin private key maps to a public key on this curve, and both legacy ECDSA signatures and the [Schnorr signatures](/topics/taproot) introduced by Taproot use that same key space.

The curve was defined in the SEC 2 standards as a Koblitz curve over a 256-bit prime field. In practice, Bitcoin developers care less about the label and more about the tradeoffs: `secp256k1` supports fast, specialized arithmetic, and its parameters were chosen in a transparent way instead of from an opaque seed. That made it a good fit for a system that needs signatures verified everywhere, from full nodes to hardware wallets.

Most Bitcoin software relies on [`libsecp256k1`](https://github.com/bitcoin-core/secp256k1), the optimized C library maintained under the Bitcoin Core organization. It provides high-assurance implementations of core operations such as key generation, ECDSA signing and verification, and optional modules for Schnorr signatures, [BIP 324](/topics/bip-324), and MuSig2.

## References

- [SEC 2 v2: Recommended Elliptic Curve Domain Parameters](https://www.secg.org/sec2-v2.pdf)
- [Bitcoin Wiki: secp256k1](https://en.bitcoin.it/wiki/Secp256k1)
- [bitcoin-core/secp256k1](https://github.com/bitcoin-core/secp256k1)
- [BIP 340: Schnorr Signatures for secp256k1](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki)
Loading