Bitcoin
比特币客户端 0.1 的重构:精确到字节的真实性证明
一位开发者重新编译了中本聪的首个比特币客户端,确认了其二进制身份并揭示了2009年使用的编译工具。
陈伟编辑笔名
重新编译的挑战
2009年1月8日,中本聪发布了首个比特币客户端,一个大小为6 440 960字节的可执行文件。此后,没有独立的验证确认发布的二进制文件与源代码生成的完全一致。一位开发者出于消除疑虑的目的,着手重建当时的编译工具链,收集了2006至2008年的软件包,并复现了原始构建的精确条件。
该操作需要在Linux下使用Wine模拟32位Windows XP环境,因为原始操作系统已不再可用。经过多次尝试,第一次编译耗时约六分钟,正如专门为该项目创建的GitHub仓库的README文件所示。结果通过SHA‑256指纹与原始文件进行比对,指纹完全相同,证明重建的二进制文件与中本聪的原始文件完全一致。
二进制文件透露的信息
对重建文件的分析显示了多处内部痕迹,其中包括编译路径指示使用了MinGW GCC 3.4.5。这一信息结束了长期关于所用编译器的争论,0.1.5版本的readme还提到Visual C++ 6.0可能是另一种选择。Berkeley DB测试的失败方式具有Windows XP系统的典型特征,进一步支持了客户端是在该平台上构建的假设。
.rar压缩包的头部包含精确到分钟的时间戳,以及压缩软件的版本信息,该版本在当时已有三年以上历史。这些细节证实压缩包是使用旧版WinRAR组装的,正如仓库所述。相反,公开的源代码并非发布当天的版本,而是2009年1月10日的更新版,因为最初的压缩包已不复存在。
教学意义
理解编译过程对于把握自由软件的安全性至关重要。编译是将源代码转换为可执行文件的过程,但每一条工具链(编译器、库、操作系统)都会在最终二进制文件中留下独特的痕迹。因此,即使两位开发者使用相同的代码,他们的可执行文件通常也会不同,这使得精确复现中本聪的文件尤为突出。
在比特币等区块链系统中,源代码的透明性是信任的基石。确认原始客户端不包含任何隐藏代码,提升了网络的可信度,因为用户可以验证分发的软件与发布的内容完全一致。这一做法同样展示了共识机制和加密指纹(SHA‑256)如何在加密货币生态系统中确保软件完整性。