中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏

2019-03-15 14:15 来源:Bitcoin.com 阅读:6345
本周,一个比特币源代码早期版本浮出水面,立刻引起了加密货币社区的热议。根据“中本聪”此前在论坛上发布的旧贴和邮件列表显示,在 2009 年 1 月 3 日比特币网络正式上线之前,他曾将一个私人版本的比

中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏

本周,一个比特币源代码早期版本浮出水面,立刻引起了加密货币社区的热议。根据“中本聪”此前在论坛上发布的旧贴和邮件列表显示,在 2009 年 1 月 3 日比特币网络正式上线之前,他曾将一个私人版本的比特币源代码分发给了一些人。

预发布的比特币,以及一个完全不同哈希算法的废弃创世区块

从 3 月 13 日开始,加密货币社区一直在讨论“中本聪”最初的比特币源代码,同时大家也发现“中本聪“很可能在比特币区块链官方发布之前,曾将一个私人版本的比特币源代码分发给了其他人。

这件事的起因,是著名比特币支持者 Francis Pouliot 分享了一个非常古老的“中本聪“源代码版本,同时他也展示了”中本聪“写的一封信,其中详细说明了他将一些”主要文件“发送给了一位叫做 James A. Donald 的人。

“中本聪“在 2008 年 11 月 17 日发送给 James A. Donald 的这封信中写道:

“我的意思是一个节点只需要延迟交易池(pending-tx pool)来获得它拥有的最佳分支,目前能够想到的分支就是最好的分支,这个分支将有区块组成,也是延迟交易池所需要的。我想我已经覆盖了对等网络广播机制,每个节点向其邻居节点发送一个包含交易和新区块哈希的库存列表。邻居节点会发送请求获取他们还没有的项目(item),如果超时项目就永远不会通过,他们会再次向拥有该项目的其他邻居区块发送请求。由于所有、或是大多数邻居区块应该拥有每一个项目,因此即便这些项目被一个区块弄得乱七八糟,他们也可以从其他区块中获取,但一次只能尝试一个区块。

库存请求数据方案引入了一点延迟,但请求速度最终会获得提高,因为额外数据区块将被保留在传输队列之外,同时也会节省带宽。

在过去的一年半时间里,我一直在处理所有这些细节工作,并进行代码编写,但仍有很多工作要做。白皮书里还没有涉及功能细节,但源代码即将推出,我把一些主要文件发给你了(目前可根据要求提高,完整版本稍后发布)”

而在分发给 Bitcointalk.org 成员“Cryddit”的源代码中,也有一些被认为是最早比特币代码版本的有趣发现。举个例子,在“Cryddit”收到的比特币代码版本里出现了“比特币矿工”这个术语,这似乎是中本聪第一次将这些网络参与者描述为“矿工”。有趣的是,在比特币官方白皮书中并没有使用“矿工”这个术语——在整篇文章中,他们都被称为“节点”。此外,根据“中本聪”发送给“Cryddit”的源代码,区块链这个词其实最初被成为“时间链(timechain)”。

根据 Bitcointalk.org 用户 Deepceleron 在 2009 年 1 月 3 日(即比特币创世区块诞生的同一天)的截图显示,在区块 213 有一个为发布的区块链和三个其他连接,如下:

中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏

比特币早期版本源代码种是这样解释的:

“时间链是一个树状结构,从根部的创世区块开始。每个区块都可能会有多个候选区块成为他们下一个区块。通过主链/最长链,pprev 和 pnext 会连接到一个路径上。区块索引可能有多个 pprev 指向它,但是 pnext 只指向最长的分支。或者,如果区块不是最长链的一部分,区块索引可能就会为空(null)。”

该早期版本源代码中还提到:

“节点将新交易收集到区块里,并将这些交易散列到哈希树种,然后扫描 nonce 值,以便让区块的哈希值能够满足工作量证明的要求。当节点解决了工作量证明之后,他们就会把区块广播给每个人,并且将区块添加到时间链种。区块中的第一个交易是一个特殊交易,其中会创建一个新代币,并且被该区块创建者所有。”

(编者注:nonce 是 Number used once 或 Number once 的缩写,在密码学中Nonce是一个只被使用一次的任意或非重复的随机数值,在加密技术中的初始向量和加密散列函数都发挥着重要作用,在各类验证协议的通信应用中确保验证信息不被重复使用以对抗重放攻击。)

比特币早期代码种另一个有趣的发现,就是“中本聪”其实最初命名了两个比特币更小的计价单位,分别是“coin”(1,000,000)和“cent”(10,000),而不是现在人们所使用的“聪(satoshi)”。此外,比特币早期代码里还提到了某种评级系统,并谈到“原子(atom)”和“用户评论”等问题。

下图:比特币最小单位最初并不是叫“聪(satoshi)”,而是叫“coin”或“cent”

中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏

根据比特币早期开发人员 Mike Hearn 的说法,“中本聪”最初打算在比特币协议里面集成一个点对点(P2P)平台,但是他并没有完成相关代码编写工作,因此这个想法也就被搁置了。Mike Hearn 还透露比特币远大马中有一个废弃的创世区块,而且具有完全不同的哈希算法。如果这个被废弃的创世区块是用来测试的,那么它诞生的时间可能会是 2008 年 9 月 10 日。

中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏

上图:从这部分代码来看,“中本聪”可能想要推出一个类似于 Openbazaar 的 P2P 平台,而且这个想法已经写在了比特币协议里。但是当比特币网络发布之后,构建这个平台的想法却被遗弃了。

互联网中继聊天客户端、P2P 平台和一个虚拟扑克游戏

除了在 2009 年 1 月 3 日发布之前的早期版本之外,比特币 0.1.0 版本的源代码里也有一些非常有趣的细节。例如,最初的比特币软件里包含了一个互联网中继聊天(IRC)客户端,旨在创建一种更简单的消息引导传递方式。此外,在比特币 0.1.0 代码版本的原始库里,还发现包含了一个创建虚拟扑克游戏的框架,这个游戏是在 2008 年 4月 16 日被添加到比特币里的。

不过,就在比特币网络正式发布之后,之前的 P2P 平台和虚拟扑克游戏在内的很多想法都没有实现。而互联网中继聊天客户端的想法虽然更新了几个版本,但在比特币 0.8.2 版本之后就被完全删除了。

从下图代码种可以看出,比特币曾经还有一个没有被开发的内置虚拟扑克游戏。

中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏

时至今日,没有人知道“中本聪”为什么要使用那些比特币术语,也不知道他对这些术语的具体定义是什么,以及为什么要放弃 P2P 平台和内置扑克游戏应用。“中本聪”一直在维护比特币代码,一直到 0.3.19 版本,但是却在 2010 年神秘离开,并把工作移交给了 Gavin Andresen。

但至少,从本文提到的比特币源代码早期版本中,让我们对这位比特币神秘创造者有了更多了解。

声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文

相关阅读