Bitcoinブロックチェーン全体を画像検索した結果、見つかったものは意外なものでした
重要ポイント
- •著者は4テラバイトのハードドライブでBitcoin Coreのフルノードを同期し、その処理には約72時間かかった。
- •PhotoRecは1テラバイト超のブロックチェーンデータを11時間以上スキャンしたが、意味のある画像は復元できなかった。
- •スキャンでは、実際の画像を表示しない 8 個の ICO ファイルと 4 個の同一 PNG ファイルなど、少数の誤検出が発生した。
- •記事は、Bitcoin Core が保存時のブロックチェーンデータと UTXO セットをXORでスクランブルしていると説明している。
- •記事によれば、通常のBitcoinノード利用者が保存済みブロックチェーンデータ内で識別可能な任意データや画像を見つける可能性は低い。

Bitcoin Magazine Bitcoinブロックチェーン全体を画像検索した結果、見つかったものは意外なものでした
Bitcoinブロックチェーンから画像を探してみたところ、結果は予想外でした。Bitcoinブロックチェーン上で見つかる任意データやコンテンツについては、オンラインで長く語られてきました。その可能性は、ニッチなアートシーンを生み出しただけでなく、Bitcoinネットワーク上の「非金融取引」に反対する動きも後押ししてきました。賛成派と反対派の議論を聞くと、ブロックチェーンは落書きで埋め尽くされた壁のように思えるかもしれません。
そこで私は、この主張を直接検証することにしました。ブロックチェーン上に実際に画像は存在するのか。そして、それは自分でフルノードを運用し、金融主権を最大化しようとするBitcoinユーザーにとって何を意味するのか。方法は単純でした。まずブロックチェーンを保存するために新しいハードドライブを用意し、その上で古典的な画像復元ソフトウェアをデータ全体に実行しました。これは、壊れたハードドライブから画像を救出したり、生の画像データを見つけたりするためのツールです。
私は画像復元作業にPhotoRecを選びました。これは20年以上前からあるオープンソースの画像復元プログラムです。このソフトウェアは、生データの中から画像ファイルを見つけるよう設計されています。故障した、あるいは破損したハードドライブから画像やその他のファイル形式を復旧するために使えます。実際には、seed words が普及する以前のBitcoinウォレット初期に失われた wallet.dat ファイルの復旧にもよく使われています。
フルBitcoinノードの同期
フルBitcoinブロックチェーンを保存するため、私は数百ドルで4テラバイトのディスクドライブを購入しました。そこに最新バージョンのBitcoin Coreをインストールし、チェーンの同期を開始しました。この処理は、Bitcoinの歴史における全取引の会計的整合性をダウンロードして検証するもので、Bitcoin Coreがバックグラウンドで自動的に処理し、およそ72時間、つまり3日かかりました。これを実行したのは、もともと高性能なゲーミングマシンでした。時間面での主なボトルネックはディスクドライブで、Bitcoinブロックチェーンの同期中に必要な読み書きが遅いことでした。
この処理で最も遅い部分は、未使用トランザクション出力セット、つまり UTXO に関係しています。ブロックチェーンを同期すると、未使用の各取引値、つまりプラス残高が UTXO セットに整理されます。そしてそれらの値が使われるとセットから削除され、送られた satoshi の新しい受取先アドレスが追加されます。
ディスクドライブ上では、この UTXO のインデックス作成に見積もりでは3週間かかる可能性がありました。そのため、速度を上げるために、私の clanker(AIエージェント)は、まずRAM上でデータをインデックス化し、その後4テラバイトのディスクドライブへ戻す方法を提案しました。全体の処理はバックグラウンドで3日かかりましたが、SSDなら約1日で完了できたはずです。SSDはディスクドライブよりはるかに高速ですが、その分価格も簡単に4倍以上になります。
ブロックチェーンのダウンロードと検証が完了すると、UTXOインデックスをRAMからディスクへ戻し、Bitcoinソフトウェアを起動しました。これでチェーンは完全に同期され、ウォレットは使用可能になりました。ここから先は、ブロックチェーン上に保存された画像を復元する段階です。
PhotoRecを使ったブロックチェーン上の画像復元
フルBitcoinブロックチェーンをディスクドライブに置いた状態で、Bitcoin Coreを停止し、Cursor AIエージェントである私の clanker に PhotoRec 7.2 をドライブ上で実行するよう依頼しました。PhotoRec の標準設定では、jpg、png、gif、tif、bmp、ico、psd、raw 形式を探します。この処理はブロックチェーンデータに対して11時間以上実行され、最終的に見つけたものは……(ドラムロール)……何もありませんでした。
1テラバイトを超えるブロックチェーンデータを半日かけてスキャンしても、画像は一切見つかりませんでした。PhotoRec の wiki ページには、このソフトウェアの仕組みを示す簡単な例があります。「PhotoRec は、ブロックが次のいずれかで始まると JPEG ファイルとして識別します: 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xe1, or 0xff, 0xd8, 0xff, 0xfe。」要するに、このプログラムはディスク上のデータを調べ、画像ファイルの存在を示すバイトを探しているのです。
このプログラムは誤検出を起こすことがあります。下の画像にあるように、開いても画像を表示しない 8 個の ICO と 4 個の同一の PNG ファイルを保存しました。したがって、実質的には意味のある画像は一切見つかりませんでした。
JPEG はどこへ消えたのか? XOR のマジック
どうしてこのようなことが起きるのでしょうか。長年にわたり、暗号資産界隈では NFT や、Bitcoinブロックチェーンに画像データを刻み込む方法について語られてきました。この分野には何百万ドルも流れ込み、今この瞬間も、これをめぐる文化戦争が続いています。本当にチェーン上に画像は存在しないのでしょうか。
実は、任意データのリスクについては、2011年という早い時期から Bitcoin Core の開発コミュニティで長く議論され、対策が検討されてきました。XOR という単純なデータ難読化手法が、ハードドライブ上に保存されているブロックチェーンデータをスクランブルするために使われます。
簡単に言えば、コンピュータは 0 と 1 で動作しており、XOR は2つのビットを比較して、それらが異なれば 1、同じなら 0 を返します。Bitcoinでは、XOR がブロックチェーンデータの各ビットを初回インストール時に生成されたランダムキーと比較し、他のプログラムには解釈できない保存時データを作ります。ただし Bitcoin ソフトウェアが動作するときには、そのデータを元に戻して使用するためのキーを持っています。XOR は非常に高速でもあるため、性能に意味のある影響を与えません。以下は、XOR の前後における Bitcoin のジェネシスブロックの例です。
XOR は現在、ブロックチェーンデータと UTXO セットの両方に適用されています。XOR が最初に議論されたのは2014年で、当時はアンチウイルスソフトがブロックチェーンデータをウイルスコードとして誤認し始めました。アンチウイルスソフトはブロックを隔離し、その結果ブロックチェーンデータが破損して Bitcoin がクラッシュし、同期不可能になっていました。2015年末までに XOR は UTXO セットの保存時データに実装され、2024年にはすべてのブロックチェーン保存時データに実装されました。
ちなみに、XOR の処理があるため、意図的に XOR を迂回しない限り、ブロックチェーンから任意データを識別したり抽出したりすることはできません。これは Bitcoin の金融利用には必要のない処理です。Bitcoin Core ソフトウェアは、各スクランブル済みブロックの位置を示す単純なデータベースを保持しているため、データを取得し、元に戻し、必要な箇所だけを簡単に利用できます。非スクランブル状態で Bitcoin を同期するのはカスタム処理であり、最初から同期するのと同じくらい時間がかかることもあります。というのも、要するに1テラバイト全体を書き直して新しい順序に並べ替える必要があるからです。そして、Bitcoinノードを運用して得られる通常のプライバシーとセキュリティの利点だけを求める人にとっては、そこまでする意味はほとんどありません。
したがって、世界中の普通の Bitcoin ユーザーのコンピュータに保存されている Bitcoin ブロックチェーンデータの大部分については、識別可能な任意データや画像は実質的に存在しません。驚きですよね。ぜひご自身のノードでも PhotoRec のテストを実行してみてください。
この記事「I Scanned the Entire Bitcoin Blockchain for Images. What I Found Will Shock You」は Bitcoin Magazine に最初に掲載され、Juan Galt によって執筆されました。