{"adoption": {"forks": 1120, "observed_at": "2026-08-28T04:09:15.197917+00:00", "stars": 5294}, "canonical_url": "https://ross.abutalabs.com/products/naivechain", "card": {"archived": false, "artifact_type": "learning-resource", "description": "A blockchain implementation in 200 lines of code", "domain": ["blockchain", "education", "microservices", "tutorials"], "enriched": true, "function": ["blockchain", "p2p", "http-server", "websocket"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["lhartikk/naivechain"], "name": "lhartikk/naivechain", "platform": [], "pushed_at": "2020-04-13T09:14:37+00:00", "repo": "lhartikk/naivechain", "stars": 5294, "tags": ["educational", "minimal-implementation", "blockchain-demo", "p2p-networking", "block-mining", "http-api", "javascript", "naivecoin", "code-reading", "nodejs", "docker"], "topics": [], "urls": [], "use_cases": ["learn how a blockchain works by reading a tiny codebase", "run a local multi-node blockchain network to see peer synchronization", "teach blockchain fundamentals in a course or workshop", "understand p2p communication between blockchain nodes", "use as a starting point to build your own blockchain experiments", "see a minimal HTTP API for mining and querying blocks"], "what_it_is": "A deliberately minimal blockchain implementation in roughly 200 lines of JavaScript, created to make blockchain internals easy to understand by stripping away the complexity of systems like Bitcoin or Ethereum. Each node exposes an HTTP API for control and uses WebSockets for peer-to-peer block synchronization, with no persistence and no proof-of-work or proof-of-stake consensus.", "when_to_avoid": ["you need a production blockchain - there is no persistence, no proof-of-work/stake, and no real security model", "you want transactions, wallets, or cryptocurrency features - they are intentionally omitted", "you need a maintained, supported dependency rather than an educational reference"], "when_to_choose": ["you want the shortest readable path to understanding blockchain data structures and node sync", "you need a teaching or demo artifact rather than production software", "you plan to extend a simple base with your own consensus or transaction logic (see also the related Naivecoin tutorial)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/naivechain", "repo": "lhartikk/naivechain", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "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:09:15.197917+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.197917+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:59:11.602152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea6f820b38cdbdd9b8b3b95a34690ba761a072f7a8527cee41c8e5e586799d96", "fetched_at": "2026-08-28T04:09:15.197917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lhartikk/naivechain"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3615, "days_push": 2333, "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}}