卡帕西中文站 / 文章导读 / 从零实现比特币

纯 Python 从零实现比特币:造出来,才算懂

原文发表:2021-06 · 导读更新:2026-08
这是导读,不是翻译。目标是让你 5 分钟拿到文章的思想地图;值得的话,带着地图去读 英文原文 →

一句话

不装任何库,用纯 Python 从数学层面手写比特币的全套底层——椭圆曲线、SHA-256、数字签名、交易序列化——最后真的在比特币测试网上广播了三笔可查证的交易。这不是区块链布道文,而是一次「用代码代替白皮书」的教学拆解,方法论与他讲神经网络时一模一样。

文章讲了什么

文章沿着「身份 → 交易 → 广播」三步走。第一步是密码学身份:手写 secp256k1 椭圆曲线(y² = x³ + 7)的 Point 和 Curve 类,用「double and add」算法从私钥算出公钥;再照着 FIPS 标准逐条实现 SHA-256 和 RIPEMD-160,把公钥压成 20 字节哈希,配上版本号和校验和做 Base58 编码,得到一个真正可用的比特币地址。第二步是交易:构造含输入输出的 Tx 对象,讲清 UTXO 的引用关系和 P2PKH 锁定脚本(OP_DUP、OP_HASH160 那一串),再手写 ECDSA 签名和 DER 编码——其中签名时各输入脚本如何替换的细节,是全文最「协议味」的部分。第三步是上链:从水龙头领测试币,把签好名的交易广播出去,浏览器里能查到结果。

他反复强调两点:其一,比特币的「难」大部分不在思想而在标准密码学和序列化的琐碎细节,甚至中本聪当年的一些 bug(难度调整的 off-by-one)至今还留在协议里;其二,这套代码纯属教学,任何人都不该拿去碰真钱。而整篇文章的组织原则,就是他挂在嘴边的那句费曼名言:

"What I cannot create I do not understand" ——Richard Feynman,转引自原文 · 原文 →

写作背景

2021 年年中正值加密货币大牛市,舆论场里全是价格和口水,很少有人讨论技术本体。当时还在特斯拉领导 Autopilot 的卡帕西选择用自己最擅长的方式切入:不站队、不预测币价,把系统拆到数学原语再逐层装回去。这和他写 《黑客的神经网络指南》、后来写 MicroGPT 是同一个动作——面对被神化的技术,用一份人人可读的实现来祛魅。配套的 karpathy/cryptos 仓库里还有更完整的实现。

十年后再看

这篇文章的价值反而随着币圈潮起潮落而愈发清晰:价格叙事早换了好几轮,但 UTXO、椭圆曲线签名、脚本系统这些底层机制一个字没变——教底层原理的内容几乎不会过期。它也是观察卡帕西教学方法论的绝佳样本:与领域无关,「从零实现 → 跑通真实系统 → 指出简化了什么」这条路线可以套用在任何技术上。对 AI 读者还有一层彩蛋式的印证:为什么他讲 GPT 能讲得那么清楚?因为他对任何黑箱都是这个拆法。

对你意味着什么

  1. 想真正搞懂区块链的工程师:跟着代码敲一遍,比读十篇白皮书解读有效。测试网免费,跑通一笔自己的交易,认知会完全不同。
  2. 学「第一性原理学习法」:挑一个你依赖但不理解的系统(哈希、TLS、tokenizer 都行),照他的路线从零写一遍——这是把「会用」升级成「理解」的通用配方。
  3. 安全红线照单全收:自研密码学代码永远只做教学用途,生产环境用审计过的库。他在原文里的自我警告,值得每个独立开发者贴在墙上。

延伸阅读