新闻加密货币我扫描了整个比特币区块链中的图片。以下是我的发现

我扫描了整个比特币区块链中的图片。以下是我的发现

作者: Bitcoin Magazine·

要点速览

  • 作者在一块 4TB 硬盘上同步了完整的 Bitcoin Core 节点,整个过程约耗时 72 小时。
  • PhotoRec 对超过 1TB 的区块链数据扫描了 11 个多小时,但没有恢复出任何有意义的图片。
  • 扫描产生了少量误报,包括 8 个 ICO 文件和 4 个无法显示真实图片的相同 PNG 文件。
  • 文章称,Bitcoin Core 会在磁盘静态存储时对区块链数据和 UTXO 集合使用 XOR 混淆。
  • 文中认为,普通比特币节点用户通常不会在其存储的区块链数据中找到可识别的任意数据或图片。
我扫描了整个比特币区块链中的图片。以下是我的发现

Bitcoin Magazine 我扫描了整个比特币区块链中的图片。以下是我的发现

我扫描了比特币区块链中的图片,结果出乎意料。网上一直有人讨论比特币区块链中可能存在的任意数据和内容。这种可能性不仅催生了一个小众艺术圈,也推动了反对比特币网络上“非货币交易”的运动。听那些支持者或反对者的说法,你大概会把区块链想成一面布满涂鸦的墙。

于是,我决定直接验证这个说法:区块链上真的有图片吗?这对那些只是想运行自己的完整节点并最大化金融主权的比特币用户又意味着什么?我的方法很简单:先买一块新的硬盘来存储区块链,然后用经典的图像恢复软件扫描这些数据——也就是那种用来从损坏硬盘中抢救图片、识别原始图像数据的工具。

我选择了 PhotoRec 来完成图像恢复工作。这是一款开源图像恢复程序,已经存在 20 多年。该软件旨在从原始数据中寻找图像文件,可用于从发生故障或已损坏的硬盘中恢复图片和其他文件格式。它实际上也经常被用来恢复比特币钱包早期时代遗失的 wallet.dat 文件,那时候助记词格式还没有广泛普及。

同步完整的比特币节点

为了存储完整的比特币区块链,我花了几百美元买了一块 4TB 的机械硬盘。随后我在上面安装了最新版 Bitcoin Core,并开始同步区块链。这个过程需要下载并验证比特币历史上所有交易的账务完整性,由 Bitcoin Core 软件在后台自动运行,耗时约 72 小时,也就是 3 天。我是在一台性能不错的游戏电脑上完成这件事的;最大的瓶颈是硬盘,因为在同步比特币区块链时,读写数据的速度都比较慢。

最慢的部分涉及未花费交易输出集,也就是 UTXO。当用户同步区块链时,每一笔未花费交易价值(输出)或正余额都会被整理进 UTXO 集合,而这些价值一旦被花费,就会从集合中移除,同时被发送 satoshi 的新地址会被加入其中。

根据一些估计,在机械硬盘上进行这一 UTXO 索引过程可能需要 3 周。因此,为了加快速度,我的 clanker(AI 代理)建议先在 RAM 中索引数据,再把数据移回这块 4TB 硬盘。虽然整个过程在后台运行了 3 天,但如果使用 SSD,整件事大约 1 天就能完成。SSD 比机械硬盘快得多,但也更现代,不过价格通常至少要高出 4 倍,甚至更多。

当区块链完全下载并验证完成后,我们把 UTXO 索引从 RAM 移回硬盘,并启动 Bitcoin 软件;此时链已经完全同步,钱包也可以使用了。接下来就是下一步:恢复区块链中存储的图片。

使用 PhotoRec 恢复区块链中的图片

在硬盘上保存了完整的比特币区块链后,我关闭了 Bitcoin Core,并让我的 clanker(Cursor AI 代理)在这块硬盘上运行 PhotoRec 7.2。PhotoRec 默认会搜索 jpg、png、gif、tif、bmp、ico、psd 和 raw 格式。该程序在区块链数据上运行了 11 个多小时,最终找到的结果是……(停顿)……什么也没有。

对超过 1TB 的区块链数据扫描了半天后,没有出现任何图片。PhotoRec 的 wiki 页面给出了一个简单示例,说明它如何工作:“当一个区块以以下内容开头时,PhotoRec 会识别出 JPEG 文件:0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xe1, 或 0xff, 0xd8, 0xff, 0xfe。”换句话说,程序会在磁盘数据中查找表明存在图像文件的字节。

该程序可能产生误报;它保存了 8 个 ICO 文件和 4 个相同的 PNG 文件,但打开后都不显示任何图片,如下图所示。实际上,并没有发现任何有意义的图片。

JPEG 去哪了?XOR 魔术

这是怎么可能的?多年来,加密领域的人一直在讨论 NFT,以及如何把图像数据刻录到比特币区块链上。数百万美元已经在这个细分领域中流动,而围绕这一问题的文化战争也仍在继续。链上真的不可能有图片吗?

事实上,关于任意数据带来的风险,Bitcoin Core 开发圈很早就已经讨论并做了规划,最早可追溯到 2011 年。XOR 是一种简单的数据混淆技术,用于在硬盘中静置时对所有区块链数据进行扰乱。

你可能听说过,计算机的基本语言由 0 和 1 组成。简单来说,XOR 会比较两个数字或比特,如果不同则返回 1,如果相同则返回 0。在比特币的场景中,XOR 会把区块链数据的每一位与初始安装时生成的随机密钥进行比较,从而让静态数据变得对其他程序毫无意义。不过,当 Bitcoin 软件运行时,它持有用于解扰这些数据的密钥,可以按需使用。XOR 速度也很快,因此不会对性能造成明显影响。下面是比特币创世区块在 XOR 前后的示例。

XOR 目前同时应用于区块链数据和 UTXO 集合。它最初是在 2014 年被讨论的,当时杀毒软件开始把区块链数据误识别为病毒代码。随后杀毒软件会隔离某个区块,导致区块链数据损坏并让 Bitcoin 崩溃,从而使同步无法进行。到 2015 年底,XOR 已经被用于静态存储的 UTXO 集合数据;而在 2024 年,它又被应用到了所有静态存储的区块链数据上。

顺带一提,XOR 机制意味着,如果不刻意绕过 XOR,就无法从区块链中识别或提取任意数据,而这对比特币的货币用途并非必要。由于 Bitcoin Core 软件维护着一个简单数据库,记录每个被扰乱区块的位置,所以它可以很容易地获取数据、解扰数据并定向使用。以未解扰方式同步比特币是一种定制流程,所需时间可能和从头同步一样长,因为它本质上需要按新的顺序重写整整 1TB 的数据,而对于只想获得运行比特币节点带来的常规隐私和安全好处的人来说,这么做并没有太大意义。

因此,对于世界各地普通比特币用户电脑上保存的大多数比特币区块链数据副本来说,实际上并不存在可被识别的任意数据或图片。很震惊,我知道。你也可以在自己的节点上亲自运行 PhotoRec 测试!

本文《我扫描了整个比特币区块链中的图片。以下是我的发现》最初发布于 Bitcoin Magazine,作者是 Juan Galt。