加密货币支持者最近开始热烈讨论本周浮出水面的原始比特币源代码的早期版本。中本聪在2009年1月3日发布的一篇论坛文章和一封邮件列表信中指出,在比特币网络发布之前,他把一个私有版本的代码分发给了一些人。
(图片来源:hackernoon)
比特币先行版本和一个被丢弃的具有完全不同好像的创世区块
Bitcoiners在过去几个小时一直在谈论中本聪最初的比特币源代码,以及这位化名的创造者是否在正式发布之前向其他人分发了一个私人版本。这场讨论始于3月13日,当时著名的BTC支持者Francis Pouliot分享了中本聪比特币源代码的一个非常古老的版本,以及这位创建者的一封信,信中详细说明了他将“主文件”发送给了James a . Donald。中本聪在2008年11月17日表示:“我把主文件发给了你(目前可以根据要求获得,很快就会正式发布)。”
中本聪在2008年11月17日发给James A. Donald的邮件列表表明,在2009年1月3日比特币正式代码发布之前,中本聪将这些文件提前分发给了一些人。在分发给Bitcointalk.org成员“Cryddit”的源代码(据信是比特币代码的最早版本)中,我们找到了一些有趣的发现。例如,代码中提到了“比特币矿工”一词,这似乎是中本聪首次将这些参与者描述为矿工。有趣的是,“矿工(miner)”一词在最初的比特币白皮书中没有使用,而是被称为“节点”。此外,根据中本聪给Cryddit的代码,“区块链”这个术语实际上当时被称为“时间链(timechain)”。
根据Bitcointalk.org用户Deepceleron 2013年12月23日的报道,这是一张2009年1月3日(与创世区块的日期相同)的截图,其中一条未发布的区块链位于区块高度213,另外还有三个连接。
这个源代码文本解释说:
“时间链(timechain)是一种树形结构,从根部的创世纪区块开始。每个块可能有多个候选块作为下一个块。pprev和pnext通过主链/最长链链接一条路径。一个区块索引可能有多个pprev指向它,但是pnext只指向最长的分支,或者如果区块不是最长链的一部分,则为null。”
文本继续写道:
节点将新交易收集到一个区块中,将它们哈希到一个哈希树中,并扫描随机值,使区块的哈希满足工作量证明的要求。当他们解决工作量证明时,他们向每个人广播该区块,然后将该区块添加到时间轴中。区块中的第一笔交易是一笔特殊的交易,它创建一个由区块的创建者拥有的新币。
比特币中最小的单位最初不叫聪(satoshis),而是被其创造者称为“coin”和“cent”。早期代码中另一个有趣的发现是,中本聪将比特币的较小单位命名为“coin”(100万)和“cent”(1万),而不是“聪(satoshis)”(今天大多数人使用的术语)。还有一行文字是关于“原子(atoms)”和“用户评论(user reviews)”的,它们指的是某种评级系统。
根据Mike Hearn的说法,这段代码是为类似Openbazaar的P2P市场编写的,但内置在比特币协议中。在比特币网络上线后,这个市场的想法被抛弃了。根据早期比特币开发者Mike Hearn的说法,中本聪原本打算在协议中集成一个点对点(P2P)市场,但是这位创建者没有完成相关代码,所以这个想法被搁置了。源代码中还有一个丢弃的创世区块,它具有完全不同的哈希。假设这个哈希是第一个创世测试区块,它是在2008年9月10日生成的。
IRC客户端,P2P市场和一个虚拟扑克游戏
除了在2009年1月3日发布前的比特币预编码版本,最初的0.1.0版本比特币代码还有一些迷人的细节。例如,最初的比特币软件包含一个IRC客户端,目的是创建一种更简单的方式来引导消息传递。此外,比特币0.1.0版本代码的原始存储库也包含了该框架,以便创建一个虚拟扑克游戏,该游戏于2008年4月16日添加。在正式比特币网络发布后,这个P2P市场和虚拟扑克游戏等想法从未实现。IRC客户端坚持了几个版本,但是在0.8.2版本之后,对IRC引导的支持完全被删除了。
比特币还有一个从未开发出来的内置虚拟扑克游戏。没有人知道为什么中本聪对比特币术语使用了特定的定义,以及为什么这位创建者决定放弃P2P市场和扑克应用。运行比特币0.1.0客户端版本的最古老的历史证明是一个人类可读(human-readable)的调试日志。中本聪一直致力于比特币代码的开发,直到0.3.19版本,他一直担任首席维护者,但后来在2010年消失,将代码管理权交给了加文·安德列森(Gavin Andresen)。至少可以这么说,这份在2009年比特币代码正式发布前的预分发代码是引人注目的,因为它提供了对比特币神秘创造者及其改变世界的技术的深入了解。