{"adoption": {"forks": 1165, "observed_at": "2026-08-28T04:06:55.109663+00:00", "stars": 2477}, "canonical_url": "https://ross.abutalabs.com/products/secp256k1", "card": {"archived": false, "artifact_type": "library", "description": "Optimized C library for EC operations on curve secp256k1", "domain": ["blockchain", "security", "developer-tools"], "enriched": true, "function": ["cryptography", "serialization", "sdk"], "health_score": 100, "homepage": null, "language": "C", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["bitcoin-core/secp256k1"], "name": "bitcoin-core/secp256k1", "platform": ["cross-platform", "embedded", "windows", "cpp"], "pushed_at": "2026-08-25T06:51:20+00:00", "repo": "bitcoin-core/secp256k1", "stars": 2477, "tags": ["secp256k1", "ecdsa", "schnorr-signatures", "elliptic-curve", "bitcoin", "constant-time", "digital-signatures", "ecdh", "musig2", "c89", "cryptocurrency", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["sign and verify bitcoin transactions with ecdsa", "generate secp256k1 key pairs in c", "implement bip-340 schnorr signatures", "perform ecdh key exchange on secp256k1", "recover public keys from signatures", "build a crypto wallet with fast signature verification", "constant-time signing to prevent side-channel attacks", "use secp256k1 on embedded systems without heap allocation"], "what_it_is": "libsecp256k1 is a high-performance, high-assurance C library for elliptic curve cryptography on the secp256k1 curve, including ECDSA and Schnorr signatures, key generation, and ECDH. It was developed primarily for Bitcoin Core but is usable in any application needing secp256k1 operations, with constant-time implementations and no runtime dependencies.", "when_to_avoid": ["you need curves other than secp256k1 (use libsodium or OpenSSL)", "you want a high-level, hard-to-misuse crypto API for general TLS or encryption", "your use case differs significantly from Bitcoin's and you need a heavily verified interface for it", "you need a managed-language library without C bindings"], "when_to_choose": ["you need fast, audited secp256k1 ECDSA or Schnorr signing and verification", "you are building bitcoin or other cryptocurrency software", "you need constant-time, side-channel resistant cryptography in C", "you need a dependency-free library suitable for embedded or constrained environments", "you need BIP-340/324/327/352 features like MuSig2 or Silent Payments"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/secp256k1", "repo": "bitcoin-core/secp256k1", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:55.109663+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:28:19.500130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b9b1cb47eeb291b1bf83620622e7c461cc657c26f1b8b92bd97828aab5c82ab", "fetched_at": "2026-08-28T04:06:55.109663+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bitcoin-core/secp256k1"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 64}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4589, "days_push": 8, "days_rel": 30, "gap_med": 189, "n_releases_24m": 4}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}