{"adoption": {"forks": 702, "observed_at": "2026-08-28T04:05:48.717377+00:00", "stars": 1882}, "canonical_url": "https://ross.abutalabs.com/products/programmingbitcoin", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Repository for the book", "domain": ["blockchain", "education", "tutorials"], "enriched": true, "function": ["cryptography", "developer-tools"], "health_score": 20, "homepage": null, "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["jimmysong/programmingbitcoin"], "name": "jimmysong/programmingbitcoin", "platform": ["python", "cross-platform"], "pushed_at": "2024-05-20T22:31:48+00:00", "repo": "jimmysong/programmingbitcoin", "stars": 1882, "tags": ["bitcoin", "book", "jupyter-notebook", "elliptic-curves", "educational", "cryptocurrency"], "topics": [], "urls": [], "use_cases": ["learn how bitcoin works internally", "implement elliptic curve cryptography in python", "understand bitcoin transactions and script", "work through programming bitcoin book exercises", "study finite fields and secp256k1 from scratch", "learn to parse and sign bitcoin transactions"], "what_it_is": "Companion code repository for Jimmy Song's O'Reilly book 'Programming Bitcoin', containing Python examples and Jupyter Notebook exercises. It teaches how Bitcoin works under the hood by building elliptic curve math, transactions, and scripting from scratch.", "when_to_avoid": ["you need production bitcoin libraries or wallet software", "you want a maintained tool rather than educational material", "you need permissively licensed code (content is CC-BY-NC-ND)"], "when_to_choose": ["you are reading Programming Bitcoin and want to run the exercises", "you want a hands-on, from-first-principles introduction to bitcoin internals", "you prefer learning via Jupyter notebooks in Python"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/programmingbitcoin", "repo": "jimmysong/programmingbitcoin", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "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:05:48.717377+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.717377+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:13:47.583201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f26bc864b36e1247b07dc11b93549ac03e97f9488f366702eaa33a62a8363b1", "fetched_at": "2026-08-28T04:05:48.717377+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jimmysong/programmingbitcoin"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3181, "days_push": 835, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}