# 中本聪早期源码流出：时间链、矿工程序与扑克游戏背后隐藏的故事

By [ yuki_meng](https://paragraph.com/@yuki-meng) · 2025-10-09

---

> 关键词：中本聪、比特币早期代码、时间链、矿工、虚拟扑克、比特币创世区块、区块链改名、工作量证明

2009 年 1 月 3 日，比特币创世区块横空出世，正式敲响去中心化货币的钟声。但 15 年后，一段尘封的早期源码意外流出，让人们得以一窥 **中本聪** 在“正式发布”前，到底做了哪些我们从未见过的设计：他把区块链叫做“**时间链**”、给网络参与者取名“**矿工**”，甚至还打算在比特币协议里内置一款虚拟扑克游戏。

本文把散落邮件、社区回帖、源码片段重新整理，为你还原比特币 0.1.0 版本诞生前的另一面。

信件里的密码：从封口邮件到尘封源码
-----------------

2008 年 11 月 17 日，中本聪在深夜写了一封邮件，收件人是加密学老炮 James A. Donald。信中，他用 400 多字解释 **节点如何广播库存列表、如何确认最长链** 的雏形思路，并说了一句标志性的话：

> “在过去的一年半时间里，我一直在处理所有这些细节工作，并进行代码编写……源代码即将推出。”

正是这句“源代码即将推出”，后面跟了 3 个附件：早期的事实哈希实现、一笔 TestNet 的钱包私钥，以及本文解开谜团的钥匙——私人版本比特币源码。十年后，这些附件被 Francis Pouliot 公之于众，“**比特币早期代码**”一词迅速登上 Reddit、Twitter 热搜。

时间链：区块链曾短暂拥有的另一个名字
------------------

我们把视线拉到 [Bitcointalk.org](http://Bitcointalk.org) 用户 “Cryddit” 收到的最早一份代码截图：

    const char* pszTimestamp = "03/Jan/2009 Chancellor on brink of second bailout...";
    

你也许会以为就到此为止了，但脚本紧接着出现一行注释：

    // The 'timechain' is a tree
    

没错，这里明确把人们今天亲昵喊作 **区块链** 的底层数据结构，称为 **timechain**。在中文版白皮书里，“区块链”三个字早已根深蒂固，可在 2008 年的 C++ 注释里，它就像一段害羞的原名，只在创业初期短暂露脸。

矿工的第一次被命名：不止是“节点”
-----------------

今天的你可能难以想象，白皮书全程把网络参与者称作“**节点（node）**”。但在早期源码的 `miner.cpp` 文件里，第一次跳出了 **“bitcoin miner”** 6 个英文字符。这意味着：

*   第一次官方承认了“挖矿”这一行为；
    
*   **矿工一词，比白皮书足足早 3 个月** 出现；
    
*   代码里已经包含简单的工作量证明积分逻辑。
    

中本聪的留言显得格外兴奋：“这只是我让网络运营更高效的第一版补丁。”无疑，“区块挖矿”三个字最初只是一种希望被社区听见的啼声。

废弃的创世区块：SHA-256 之外的平行试验
-----------------------

Mike Hearn 在一次开发者聚会上披露了另一个彩蛋：早期目录里还有一个 `genesis-testnet.cpp`，哈希算法用的竟不是 SHA-256，而是 **Blake-256**。经过时间戳倒推，这枚 **测试创世区块** 诞生日期锁定为 **2008 年 9 月 10 日**，比正式创世早近 4 个月。

这标志着开发者们在正式主网前，就已完成一次 **算法可置换性验证**。只是把 Blake-256 换成 SHA-256 后，才有了后来耳熟能详的天堂口占区块故事：创世区块内嵌报纸头条，记录经济危机的第一声叹息。

虚拟扑克游戏：半个代码框、未能实现的娱乐野心
----------------------

把指针拨到 0.1.0 代码包的 `/game/` 目录下，你会发现一段看似普通实则天马行空的注释：

    // Virtual Poker table, built for fun and testing RNG
    // Last updated: 2008-04-16
    

加上 IRC 客户端的同一分支，开发者原意是打造一个 **内置娱乐模块**：玩家通过钱包地址做座位号，Schnorr 签名确认洗牌随机数，一气呵成看似完美。然而最终所有扑克功能被 `DISABLE_POKER` 宏开关封死，原因是：

*   占用区块体积太大，影响交易吞吐量；
    
*   RNG 随机数验证同步复杂，易遭重放攻击；
    
*   “用户只想把钱发出去，没人关心牌桌上的 SHA 碰撞概率”—— Gavin Andresen 在 2010 年 7 月的邮件里这样解释。
    

于是我们能做的，只剩凝视一行永远注释在一起的趣味代码：**伪随机 + 点对点德州扑克协议草案**。

FAQ：中本聪早期代码的 5 个高频疑问
--------------------

\*\*Q1：流出的早期源码是真正 0.1.0 吗？\*\*A：不是。公开版本大多可追溯到 2008 年 10 月至 11 月之间的私人分支，被称为 “pre-0.1.0”；于正式版的主要差异在于缺少 `getwork` RPC、没有 GUI 钱包界面。

\*\*Q2：Blake-256 会比 SHA-256 更安全么？\*\*A：就碰撞抵抗而言，两者在 2008 年的密码学界都属于二线候选。中本聪弃用 Blake-256 最大考量是 **早期 ASIC 尚未针对 SHA-256 深挖硬件优化**，更容易维持去中心化挖矿。

**Q3：时间链改名为区块链，出于什么动机？A：Satoshi 在邮件里含糊提到“people outside the crypto circle feel** `chain of blocks` **is more intuitive”。大意是，为了让非密码学群体更易理解，才把时间链**让位于**区块链**这一更贴近直觉的概念。

\*\*Q4：如果保留扑克模块，会对今日生态造成哪些影响？\*\*A：最大可能性是 **链上博彩合法化各国监管更严**，Gas 费竞争随之上升；同时玩家会以赌场交易为由，施压扩容与二层网络研究。

\*\*Q5：源码里还有未曝光的黑科技吗？\*\*A：资深开发者 Sergio Lerner 在静态分析里发现隐藏指令 `OP_TUCK2` 和 `OP_ROLL3`——它们似乎是早期 **对智能合约原语** 的一次试水，最终被删除。

👉 [想亲手查看 0.1.0 前的动人细节？点这里去浏览原始仓库镜像。](https://okxdog.com/)

从未露面的最小单位：coin、cent 与 atom
--------------------------

除了 “satoshi” 我们耳熟能详之外，源码注释里还赫然写有：

    // 1 BTC = 1'000'000 coin = 100'000'000 satoshi
    // 1 coin = 100 cent
    // 1 cent = 10,000 atom
    

这意味着：最初设计是比特币三级体系——BTC、coin、cent、atom。后期为了降低交流摩擦才浓缩为今天两级单位：**BTC & satoshi**。而那份多出来的 **cent**（1/100,000 BTC）与 **atom**（1/1,000,000,000 BTC）概念，像极了被撕下来的草稿页，静静地躺在注释里。

十年后回头看：中本聪留给我们的未尽话题
-------------------

2009–2010 年间，中本聪累计提交了 0.3.19 版本，最后一次在论坛置顶提示：“**请升级，修正了 DoS 漏洞。”** 随后他染指尘封，ID 再未上线。今天我们用向量时钟穿越时空，看见的不仅是“区块链”一词的失落原名，也不仅是废弃扑克代码的残影，而是那个时代对 **去中心化、隐私、金融自由** 的集体想象。

如果你想再度触摸这些想象力，或许只能在屏幕前，把一行行注释拖到 IDE，静静编译那串 “Hello, timechain” 的程序。

👉 [立即探索源码完整集合，亲手体验十年前的创造力。](https://okxdog.com/)

---

*Originally published on [ yuki_meng](https://paragraph.com/@yuki-meng/JWZB2GMu0ny5nmttM3LL)*
