BTCが機能を削った理由|DAOハック6000万ドルの教訓

2016年6月、当時のイーサリアム・エコシステム最大のプロジェクト「The DAO」から、約6000万ドル相当のETHが盗まれた。攻撃者が突いたのはたった一つの欠陥——「再入攻撃(reentrancy attack)」と呼ばれる、ループ処理に関するコードの問題だった。

多機能であることと、安全であることは、必ずしも両立しない。この事件はその事実を、6000万ドルという対価で証明した。

ループ1行が飲み込んだ6000万ドル

The DAOのコードは「引き出しリクエストに応じてETHを送金し、その後に残高をゼロにする」という順序で書かれていた。攻撃者はこの順序を逆手に取った。「ETHを受け取ったら即座に再び引き出しリクエストを送る」という悪意ある契約を組み込み、残高がゼロになる前に繰り返し資金を引き出し続けた。

この攻撃が成立した理由は、使われていたスマートコントラクト言語がチューリング完全——すなわち、ループや再帰を含む任意の計算を表現できる設計だったからだ。表現力の高さが、攻撃の余地を生んだ。

「できること」の多さが孕む盲点

チューリング完全な言語では、実行がいつ終わるか事前に保証できない。外部から渡されるデータや、他のコントラクトの挙動次第で、実行結果が変わりうる。裏を返せば、「あなたのコードが全ての状況でどう動くか、書いた本人にも予測しきれない」状態になりやすい。

DeFiの世界では2020年以降だけで数十億ドルが、スマートコントラクトの脆弱性によって失われてきた。ループ・再帰・外部コール——これらはすべてチューリング完全性が持つ「表現力」の副作用だ。アルトコインのエコシステムは機能を追加し続けることで成長しているように見えるが、同時に攻撃の入り口も増やし続けている。

BTCが意図的に捨てた機能

ビットコインのスクリプト言語「Bitcoin Script」は、チューリング不完全だ。ループが書けない。再帰が呼べない。条件分岐も限られている。

これは実装上の制約ではなく、意図的な設計上の選択だ。

Bitcoin Scriptが担うのは本質的に「この署名は正しいか」「このハッシュ値は一致するか」という検証に限られている。複雑なことはできないが、やることが明確で、結果は事前に誰でも確認できる。ループがなければ実行が無限に続く可能性がなく、外部コントラクトを呼び出す仕組みがなければ他のコードの挙動に引きずられない。

この「削ること」への徹底が、2009年の誕生からプロトコル層での資金消失インシデントをゼロに保ってきた技術的根拠の一つになっている。

予測可能性こそが、信頼の根拠になる

セキュリティの文脈において、「予測可能性」は過小評価されやすい。開発者の目には「できることが少ない」はデメリットに映る。しかし検証者にとっては、「挙動が完全に読める」ことこそが信頼の根拠になる。

ビットコインのノードが世界中で2万台以上稼働し、互いに結果を検証し合えるのは、スクリプトの実行結果が一意に決まるからだ。誰かの承認を必要とせず、数学的に検証できる。これが「信頼を必要としないシステム」の実体だ。

その恩恵は、鍵を持つ人にしか届かない

ただし、ここに重要な前提がある。

Bitcoin Scriptの堅牢性は、ビットコインプロトコルそのものの安全性だ。しかし、あなたのBTCが取引所の口座にある場合、この設計はあなたの資産を直接守っていない。

取引所があなたの代わりに秘密鍵を管理している状態では、取引所に何らかの問題が起きた際——システム障害、不正流出、規制当局による出金停止——BTCプロトコルがどれだけ安全に動いていても、あなたはBTCを動かせない。日本国内でも過去に複数の取引所で出金が一時停止した事例がある。その間もビットコインのネットワーク自体は一切止まっていなかった。問題はプロトコルではなく、「秘密鍵が誰の手元にあるか」だった。

「ループを禁止した」設計思想が体現するのは、シンプルで予測可能な構造への信頼だ。その哲学を自分の資産管理に適用するとすれば、答えは一つに絞られる——秘密鍵を自分で管理することだ。

ハードウェアウォレットを入手し、シードフレーズを安全に保管し、取引所から自分のウォレットにBTCを移す。設定は一度だけでいい。それだけで、Bitcoin Scriptの設計思想がそのままあなたの資産を守る構造になる。

機能を削ることで16年の実績を作ったビットコインのように、あなたの資産管理もシンプルに、そして予測可能に。その一歩が、設計の恩恵をあなたのものにする。

※本記事は一般的な情報提供を目的としており、投資助言ではありません。

この記事が参考になったら、セルフカストディの具体的な始め方もチェックしてみてください。

LINE登録でセルフカストディの始め方を学ぶ 正しい手順を無料でお届けします
← 記事一覧に戻る
LINE登録 ▶ セルフカストディの始め方を無料で学ぶ