ECDSA
Also called: Elliptic Curve Digital Signature Algorithm, ECDSA signature, secp256k1 ECDSA, DER signature.
ECDSA (Elliptic Curve Digital Signature Algorithm) is the signature scheme Bitcoin has used since 2009, over secp256k1, for all pre-Taproot outputs.
ECDSA, the Elliptic Curve Digital Signature Algorithm, is the signature scheme Bitcoin has used from the start. A wallet signs a transaction with its private key, and nodes check the signature against the public key using the secp256k1 curve.
Where ECDSA is used
Every output type before Taproot relies on ECDSA through OP_CHECKSIG and OP_CHECKMULTISIG: P2PKH, P2SH scripts, P2WPKH and P2WSH. For SegWit version 0 inputs, BIP 143 changed what the signature commits to, including the amount being spent. P2TR outputs use Schnorr signatures instead.
Encoding and malleability
An ECDSA signature is a pair of numbers (r, s). Bitcoin encodes them in DER format, which makes them variable in length and up to 72 bytes, followed by a one-byte sighash flag. That flexibility caused problems:
- Parsing differences. Nodes relied on OpenSSL to parse signatures, and a change in OpenSSL made some nodes reject the chain. BIP 66 made strict DER encoding a consensus rule from block 363,725 (July 2015).
- Malleability. For any valid signature, replacing s with n - s (n being the curve order) gives another valid one. BIP 146 proposed requiring the "low S" form, and BIP 62 catalogued other sources of malleability. SegWit removed signatures from the TXID altogether.
ECDSA vs Schnorr
BIP 340 explains why Taproot moved on: Schnorr signatures have a stronger security proof, are non-malleable, have a fixed 64-byte size and allow key aggregation. ECDSA remains valid and widely used. BIP 461 proposes a deterministic ECDSA signing algorithm, with signatures of at most 70 bytes in DER, so users can cross-check hardware signers for hidden key leaks.