The DAOハッキング:イーサリアム・クラシックの物語
2016年のDAOハッキングの物語と、コミュニティの対応がどのようにして別のチェーンとしてのイーサリアム・クラシックの誕生につながったのか。
Date published: 2021年12月15日
ジュニオンによる解説。暗号資産の歴史上最大のデジタル強盗の一つである2016年のDAOハッキングの物語と、ブロックチェーンをフォークするというイーサリアムコミュニティの物議を醸した決定が、どのようにしてイーサリアム・クラシックの誕生につながったのかを語ります。
このトランスクリプトは、ジュニオンによって公開された元の動画のトランスクリプト (opens in a new tab)のアクセシブルなコピーです。読みやすさのために軽く編集されています。
ディスカバリー (0:00)
2016年6月13日、月曜日。コーネル大学のコンピューターサイエンスの教授が、暗号資産分野で最も野心的なプロジェクトの一つであるThe DAOのコードを調査しています。彼は数ヶ月前から、プロジェクト全体を危険にさらす可能性のある特定の欠陥があると信じていたため、プロジェクトを保留にするよう提唱していました。しかし今日、彼は深刻な脆弱性を発見します。666行目のバグです。
彼は、このバグによってハッカーがATMのように無制限に引き出しを行える可能性があると危惧しています。攻撃者のアカウントに10ドルしかなかったとしても、すべてのお金がなくなるまで何度も何度も引き出すことができるのです。The DAOには2億5000万ドルが投資されており、そのすべての資金が危険にさらされていました。
The DAOの背後にある企業であるSlock.itは、潜在的なエクスプロイト(脆弱性攻撃)を認めつつも、いかなる攻撃も実行不可能であるため、すべての資金は依然として安全であると宣言します。彼らは2行のコードを入れ替えることでGitHubにコミットします。これは、DAOフレームワークのバージョン1.1の一部として含まれる修正でした。
しかし、チームが勝利を宣言していたまさにその時、ハッカーは密かに彼らの足跡をたどり、まさにこのバグを利用したエクスプロイトを開発していました。それから4日後の金曜日、The DAOは5500万ドルもの金額をハッキングされたのです。
8100万ドルのSWIFTハッキングが中央集権的な銀行業界の穴を公にし、WannaCryランサムウェア攻撃がコンピューターのオペレーティングシステムにおける致命的な脆弱性を明らかにしたように、DAOハッキングは、コードがすべてを支配する世界におけるスマート・コントラクトのセキュリティの初期の脆弱性を露呈しました。ブロックチェーンの制御を取り戻そうと奔走するイーサリアムコミュニティに、大きな衝撃を与えました。
これは、史上最大のデジタル強盗の一つと、それが最初から起こらなかったかのように歴史を書き換えようとする大胆な試みの物語です。
The DAOとは何だったのか? (2:00)
The DAOの登場です。これは分散型自律組織(DAO)の略です。このアイデアはクラウドファンディングから着想を得ました。異なるプロジェクトのために複数のファンドを用意するのではなく、すべてを統括する一つのファンドが存在し、これを行うにはDAO以上の方法はありませんでした。
立ち上げ時、投資家は預け入れた1イーサにつき100 DAOトークンを受け取りました。これらのトークンは、プロトコルに対するガバナンスを彼らに与え、The DAOにおける彼らのシェアを表していました。トークン保有者は提案を提出することができました。例えば、XYZ社の10%のステークと引き換えに100万ドルを投資するという提案が可能です。
提案が初期の検証を通過すると、他のすべての投資家によって投票が行われます。この期間中、トークン保有者は、その投資がプラスの期待値をもたらすと信じるなら「賛成」に投票し、マイナスの期待値をもたらすと信じるなら「反対」に投票することができました。また、フォーラムを利用して自分の意見を述べたり、他の人の意見を読んだりすることもできました。
投票期間が終了し、全トークンの20%という定足数が満たされると、The DAOは指定されたイーサを提案を表すスマート・コントラクトに自動的に転送しました。これらの提案から生み出されたイーサは、その後トレジャリーに返還されます。それはまさに、利益を生み出すように設計された一つの巨大な分散型ヘッジファンドのようでした。群衆の知恵が最高の投資機会を生み出すのに役立つという考えでした。
しかし、少数派が多数派に抑圧されるのを防ぐ方法が依然として必要でした。少数派のグループが、投票で勝てない提案に強く反対した場合、「反対」に投票する代わりに、スプリット(分割)関数を呼び出して、メインのDAOから子DAOへイーサを移動させることができました。これは実質的にDAOを2つに分割するものです。このスプリット関数は、後で非常に重要になります。
クラウドファンド (4:01)
The DAOは史上最大のクラウドファンディングプロジェクトであり、1270万イーサ(当時の価値で1億5000万ドル)を調達しました。これはイーサリアムの初期の時代に行われ、プロジェクトは膨大な誇大広告と投資家のFOMO(取り残されることへの恐怖)にさらされていました。
これ以前のイーサリアムのプロジェクトは、主に任意の概念実証(PoC)でしたが、これは巨大な可能性を秘めた完全に機能するプロジェクトでした。世界中の何百万人ものマイナーによって保護され、いかなるハッキングからも完全に安全であり、分散型でした。プロジェクト全体がイーサリアム上のスマート・コントラクトの集合体で構成されていたのです。
これは世界で最も安全なコンピューター上でホストされるイミュータブルなコードであり、完全に分散型で自律的な組織というDAOの重要な特性を保証していました。4月30日にコントラクトがデプロイされると、単一の事業体は(Slock.itでさえも)プロトコルに変更を加えたり、その存在を停止させたりすることはできませんでした。そのコードは様々なイーサリアム開発者によって数え切れないほど監査されており、誰もがレビューできるように公開されていました。
ハッキング (5:02)
「Lonely, so lonely(孤独、とても孤独)」— これはDAO提案#59の名前です。ただの通常のスプリット提案ですが、実はここからハッキングが始まります。ハッカーが提案を提出した後、誰でも自由に参加できる標準的な7日間の議論期間があります。しかし、誰もこのスプリットには参加しません。
誰かが単独でスプリットを呼び出し、子DAOを作成し、すべてのイーサを自分のウォレットに送り返す提案を作成するのは標準的な手順です。これにより、ユーザーはDAOトークンに裏付けられた資金を取り戻すことができます。7日間が経過し、ハッカーはスプリット関数を呼び出すことが許可されました。誰も何も疑っていません。
しかし、スプリット関数が呼び出されると、コミュニティは驚くべき事態に気づきます。1時間に800万ドルのペースで、The DAOからイーサが流出しているのです。コミュニティは何が起きているのかを解明しようと奔走します。どうやら攻撃者は、スプリット関数を再帰的に、何百回も何度も何度も呼び出しているようです。
4日前に行われたバグ修正を覚えていますか?デプロイされた後にスマート・コントラクトのコードを編集する方法がないのは残念なことであり、この修正は作成中であった全く別のDAOであるThe DAO 1.1の一部としてGitHub上にのみ存在していました。この小さな修正がすべてを防ぐことができたはずでした。実際の支払いの前に残高が更新されるように、2行のコードを入れ替えるだけのものだったのです。
しかし、この修正がなければ、コントラクトが残高を更新する前に、誰でも繰り返し関数を呼び出してイーサを引き出すことができました。それは、お金を渡すまで残高を変更しないATMのようなものです。「10ドル引き出せますか?待って、その前に10ドル引き出せますか?待って、その前に…」
ロビンフッド・グループ (6:55)
DAOトークン保有者は、自分たちの投資がメインのDAOから、ダークDAOとも呼ばれる子DAOへとゆっくりと流出していくのを見守っていました。さらに、このニュースを受けてイーサリアムの価格は20ドルから15ドルへとフラッシュクラッシュ(瞬間暴落)しました。何か手を打たなければならず、唯一の方法はハッカーよりも先に残りを抜き取ることでした。こうして、空にするための競争が始まりました。
地球の裏側、リオデジャネイロのコパカバーナ地区にあるアパートで、アレックス・ヴァン・デ・サンデはSkypeのメッセージでスマートフォンが鳴りやまないことで目を覚まします。彼は妻に振り向いて言いました。「ハッキング不可能な巨額の資金の山について話したのを覚えてる?ハッキングされたよ」
アレックスは他の非公開の開発者たちと連絡を取り、ロビンフッドと名付けたグループを結成しました。残りの資金を抜き取り、正当な所有者に返還するホワイトハットハッカーたちです。しかし、新しいスプリットを提案する時間はありませんでした。それには7日間の投票期間が必要だからです。
代わりに、彼らは数時間後に終了しようとしていた提案#71に目をつけました。彼らはそのスプリットに参加し、同じハッキング手法を使って残りのすべての資金をこの子DAOに吸い上げるつもりでした。攻撃が始まってから6時間が経過し、泥棒はThe DAOのイーサの30%を盗み出すことに成功していました。しかし、理由は不明ですが、攻撃は機能しなくなりました。トランザクションは失敗し、すべてが終結したのです。
一方、アレックスは残りの70%の資金を確保するためのホワイトハット攻撃を開始する準備を整えていたところでした。しかし突然、インターネット接続が途絶えました。残りわずか30分というところで、彼はブラジルのインターネットサービスプロバイダーであるNETに必死に電話をかけましたが、ロボットの音声から「お住まいの地域でインターネットの障害が発生しているようです」という返答があっただけでした。スプリット提案は終了し、彼はロビンフッド攻撃を実行する機会を逃してしまったのです。
翌朝、アレックスは別のスプリット提案に潜入するためにグループを再招集しようとしましたが、他のメンバーは忙しくしていました。「私たちは歴史上最悪のハッカーのように感じました。インターネットの不具合と家族の用事によって阻止されたのですから」
空にするための競争 (9:10)
最初の攻撃から4日後、The DAOは再び攻撃を受けました。1ラウンドあたり数イーサとゆっくり流出していましたが、すでに数千ドルが蓄積されていました。様子見をしている攻撃者からのもののようでした。この時点で、ロビンフッドは何か行動を起こす必要がありました。
彼らはスプリット#78に潜入することを選びました。提案のキュレーターを特定しており、それがまもなく終了する予定だったからです。彼らはDAOトークンを喜んで寄付してくれるクジラ(大口投資家)たちに連絡を取り、チームは600万トークンを確保することができました。ロビン・コントラクトが持つトークンが多いほど、より速くイーサを吸い上げることができました。攻撃者はペースを上げ、他の攻撃者も加わりました。しかし、寄付のおかげでロビンフッドは彼らを上回るペースで進めることができました。これにより、彼らは720万イーサ(The DAOの55%)を確保することができたのです。
フォーク (10:08)
メインのDAOはすでに空になり、すべての資金はいくつかの子DAOに分散されていました。主な2つはホワイトハットDAOとダークDAOです。しかし、すべてのお金はタイムロックされていました。27日間の待機期間が終了するまで、子DAOの下で提案を提出することはできませんでした。そしてその後も、外部のアドレスに資金を送るには提案を提出し、2週間待つ必要がありました。実質的に、ハッカーがイーサリアムの総供給量の5%に相当する資金を現金化できるまでには、まだ41日間の猶予がありました。
しかし、ハッカーがそのイーサリアムに触れることは決してありませんでした。次に起こったことは、ブロックチェーンの歴史において最も大胆で物議を醸したエピソードの一つです。コミュニティは、ハッカーを勝たせるわけにはいかないと決定しました。彼らは、ハッキングに関与したすべてのトランザクションが取り消され、全員がお金を取り戻せるように歴史を書き換えることを望んだのです。彼らはイーサリアムをフォークすることを選びました。
ブロックチェーンは、ブロックがマイニングされるたびに増え続けるトランザクションのリストのようなものです。すべてのトランザクションはブロックチェーンに永遠に刻み込まれます。しかし、50%以上のマイナーが共謀すれば、ブロックチェーンを不正に改ざんし、歴史を好きなように書き換えることができます。通常、これは51%攻撃と呼ばれます。しかし、このフォークには悪意のあるものは何もありませんでした。コミュニティは単に、自分たちから盗まれたお金を取り戻そうとしていただけなのです。
コードは法である (11:48)
それでも、全員が提案されたフォークに賛成したわけではありませんでした。彼らは「コードは法である」と主張しました。この見方では、攻撃者はハッカーというよりも、コントラクトの条件を注意深く読んだ賢い弁護士のようなものでした。したがって、実際に盗まれた資金はなく、彼らはダークDAOからのイーサを正当に受け取る権利があるというのです。
イーサリアム自体が実際にハッキングされたわけではないことに注意することが重要です。単に、不適切に書かれたスマート・コントラクトが悪用されただけなのです。これらは2つの異なる事象です。さらに彼らは、ブロックチェーン上で起こることはイミュータブルであり、状況に関わらず決して改ざんされるべきではないと信じていました。
最初の攻撃から1日後、攻撃者はThe DAOのSlackグループチャットに、自身の秘密鍵で署名した公開書簡を送信しました。
「The DAOおよびイーサリアムコミュニティへ:私はThe DAOのコードを注意深く調査し、正当に300万イーサを請求しました。この報酬についてThe DAOに感謝したいと思います。私は、この意図的な機能の使用を『窃盗』と特徴づけている人々に失望しています。私はスマート・コントラクトの条件に従って、この明示的にコーディングされた機能を利用しているのです。ソフト・フォークまたはハード・フォークは、私の合法的かつ正当なイーサの差し押さえに等しいものです。そのようなフォークは、イーサリアムだけでなく、スマート・コントラクトやブロックチェーン技術の分野に対するすべての信頼を永久的かつ取り返しのつかない形で台無しにするでしょう。間違いなく、ソフトであれハードであれ、いかなるフォークもイーサリアムにさらなる損害を与え、その評判と魅力を破壊することになります。」
さらに調査を進めると、署名が無効であることが判明したため、この手紙は攻撃者を名乗る誰かによって書かれただけのものでした。
一方、賛成派は、「コードは法である」というのは極端すぎる主張であり、人間が社会的コンセンサスを通じて最終的な決定権を持つべきだと主張しました。倫理的に間違っており、おそらく違法であるため、ハッカーがエクスプロイトから利益を得ることを許すべきではありません。しかし最も重要なことは、The DAOは単に大きすぎて潰せない存在だったということです。それはイーサの総供給量の約15%を保持していました。
イーサリアム・クラシック (14:34)
2008年の金融危機を彷彿とさせる出来事の中で、イーサリアムの開発者たちはThe DAOを救済しました。イーサリアムの創設者でありリード開発者であるヴィタリック・ブテリンは、フォークを推進することに悪びれる様子はありませんでした。後のインタビューで彼は次のように述べています。「一部のビットコインユーザーは、ハード・フォークを彼らの最も基本的な価値観に何らかの形で違反していると見ています。個人的には、そのような極端なところまで押し進められた基本的な価値観は馬鹿げていると思います。」
これらの見解がイーサリアムコミュニティの多数派を占めました。1イーサが1票に等しいという物議を醸したコミュニティの投票では、87%がフォークを支持しました。そしてブロック1,920,000において、世界中のコンピューターノードがソフトウェアを更新し、フォークを受け入れました。The DAOと子DAOからのすべてのイーサは、返金コントラクトに移動されました。
しかし、それだけでは終わりません。DAOハッキングを含む元のイーサリアムのブロックチェーンは継続していました。実際、それは成長していました。フォークに反対したマイナーたちはブロックのマイニングを続け、トランザクションは依然として行われていました。翌日、Poloniexがそのコインを上場し、1枚2ドルで取引が始まりました。このチェーンはイーサリアム・クラシックとして知られるようになりました。元の、変更されていないブロックチェーンです。
フォーク前にイーサを保有していた場合、今では1イーサリアムと1イーサリアム・クラシックを持つことになります。The DAOで1イーサを保有していた場合、返金コントラクトから1イーサリアムを引き出すことができます。そして、もしあなたがThe DAOをハッキングしたばかりだったなら、イーサリアム・クラシックでかなりの財産(約700万ドル)を築いていたことでしょう。
The DAOの遺産 (16:14)
当初、イーサリアム・クラシックは代替手段として勢いを増し、救済に反対するブロックチェーン原理主義者の強力なコミュニティが存在しました。しかしそれ以降、イーサリアム・クラシックは牽引力を得られず、実用性のほとんどないアイデアとしてのみ存在しています。イーサリアムには何千ものプロトコルが存在する一方で、イーサリアム・クラシックにはいくつかの基本的なものしかありません。フォークが勝利したことは明らかです。
2ヶ月後、ロビンフッドは価格を暴落させる目的で、保有する290万イーサリアム・クラシックをPoloniexに送金し、すべてイーサリアムに売却しました。14%は無事に変換されましたが、86%はPoloniexによって凍結され、グループに返還されました。ロビンフッドは、DAOハッキングの影響を受けたユーザーのために、イーサリアム・クラシックのネットワーク上に返金コントラクトを設定しました。
ハッカーに関しては、360万イーサリアム・クラシック(現在の価値で1億5000万ドル)を手にして立ち去りました。しかし、もしフォークがなかったら、その360万イーサリアムは今日では70億ドル以上の価値になっていたでしょう。
The DAOの永続的な影響 (17:26)
混乱を避けるため、The DAOは現在、一般的にジェネシスDAOと呼ばれていることに注意することが重要です。なぜなら、それは最初のDAOでしたが、決して最後のものではなかったからです。初期の挫折にもかかわらず、DAOはますます人気を集めています。MakerDAOはステーブルコインのDAIを管理しており、UNIトークンを持つユニスワップのような分散型金融 (DeFi) プロトコルは通常、ガバナンスDAOを持っています。これらのDAOはすべて、以前のプロジェクトの経験に基づいて構築され、さらに多用途で成功した組織を生み出しています。
しかし、ジェネシスDAOはその種の最初のものとして、実験(高価な実験)として作成され、ピーク時には2億5000万ドル、つまりイーサリアムの総供給量の15%を管理していました。リード開発者のクリストフ・イェンチュは、500万ドルの調達しか予想しておらず、後に上限を設けなかったことを後悔していると語っています。これほど大規模な実験としては時期尚早であり、間違いなく大きすぎて潰せないものでした。
スマート・コントラクトの作成は、自動運転車の開発に似ています。事故を防ぐために広範なテストを必要とする大きな責任が伴います。このような新たな警戒があっても、DeFiプロトコルは依然として5000万ドル以上ハッキングされることがあり、中には専門の監査法人による監査を受けた後でさえハッキングされるものもあります。しかし、DAOハッキング以降、救済措置は行われていません。イーサリアムコミュニティは現在より強固になり、次世代のデジタルアプリケーションを構築する、さらに大きく野心的なプロジェクトへと進む準備ができています。