ハッキングによりDAOから失われた360万ETHと残された激動の27日間

先日、業界を震撼させた「DAO Hack」、「DAO Attack」についての経緯とその後の動きについてまとめています。

アジェンダ

・DAOのSplit機能を悪用した360万ETHの盗難
・残された期間は27日間、そして選択肢は3つ
・DAOアタッカーからの要求
・この事件に対する誤った報道

DAOのSplit機能を悪用した360万ETHの盗難

事件の概要ですが、DAOのスマートコントラクトの穴をついた巧妙な手口により、約360万ETHがDAOプールから切り離されあるアドレスに送金されました。このアドレス内のETHは、移動させたDAOアタッカーにしか操作ができません。そのため、DAOから実質失われた状態です。

では、どうしてこのようなことが起きたかについて見ていきましょう。まずDAOアタッカーは、DAOに備わっていた”Split”という機能を利用しました。この機能は、DAOの運営に賛同をしない場合、自分がDAOに対してプールを行った資金をDAOから切り離し新しいDAOを作成できるというものです。

この機能を実行するには、DAO内でプロポーサル(DAOへの参加者に実行の承認を求めること)を行う必要があります。実際のそのプロポーサルはブロックチェーン上で確認できます

さらに、DAOの報酬をトークンホルダーに送金する機能を利用しました。報酬の送金機能には、1週間ほど前からフォーラム内で問題が指摘されており、送金の指示がなされると「特定の報酬を特定のアドレスに1度だけ送金する」ものでした。しかし、指摘されていた問題は、1度の指示に対して1度の送金で終わるところを何度も送金を行うことが可能であるという点でした。

これに対して、DAOの開発者たちもまだDAOにはまだトークンホルダーに配当する報酬がないため、実質何の問題もないとしており、次のバージョンアップでの対応としていました。。しかし、DAOアタッカーは、巧妙な方法でSplitの実行と自分のアドレスへの報酬の送金とを組み合わせました。

それは、以下の流れです。

DAOアタックの手口

実行コードレベルの詳しい解説はこちらにありますので、より詳細に知りたい方はどうぞ。このようにして、DAOは360万ETH相当を失ったのでした。

残された期間は27日間、そして選択肢は3つ

幸運なことにも、Split機能を使った新しいDAOアドレス内の資金は、27日間は移動ができないという制約があります。そのため、DAOアタッカーが資金を利用できるようになるまでは、27日間の猶予があるため、それまでに対策を打つことができます。

現在3つの方法が提示されています。

①DAOアタッカーに大人しく資金を明け渡す
②ソフトフォークを行い、DAOアタッカーの利用アドレスの取引を無効化
③ハードフォークを行いそもそもなかったことにする

では順番にみていきましょう。

①DAOアタッカーに大人しく資金を明け渡す
これはそのまま、何の対策をせずにDAOアタッカーに資金を明け渡します。ちなみにDAOアタッカーの言い分としては、DAOのコードを深く理解し適切な方法でプロポーサルそして機能を利用したに過ぎないと述べています

②ソフトフォークを行い、DAOアタッカーの利用アドレスの取引を無効化
これは、DAOアタッカーが資金の移動先に使ったアドレスを凍結してしまおうというものです。中央集権的に管理をされている銀行やカード会社などが利用者の口座やカードの利用と停止するのと似ています。

しかし、これが行われるとそのアドレスに保有されている360万ETHも利用できなくなってしまいます。ですので、被害にあったもともとの保有者が資金を取り戻す術がなくなってしまいます。

③ハードフォークを行いそもそもなかったことにする
これが現状、被害にあった保有者たちが救済される唯一の方法であるとされています。これは、ブロックチェーンの記録を360万ETHが送金される前まで遡らせ、そもそもなかったことにするというものです。

ブロックチェーンとは分散型台帳ではなかったのか疑うような方法ですが、イーサリアムネットワークのノードの過半数が賛成すればハードフォークは実行されます。これは、分散化という思想とは相反する対策となりますので、コミュニティ内でも大きな波紋を呼んでいます。

DAOアタッカーからの要求

これらのコミュニティの動きに、DAOアタッカーも黙って27日間待っているわけではありません。彼は以下のようにDAOコミュニティのSlackにて発言しています。

WhalePanda氏のTwitterより

なんとフォークの提案に反対したノードには、100万ETHを分け与えると言い出したのです。このDAOアタッカーが、本人かは定かではありませんが、よりコミュニティ内を混乱させる事態となりそうです。

この事件に対する誤った報道

Gox事件よろしく、今回も誤解を招くような報道が行われているように思います。こちらの記事をみても、イーサリアムとスマートコントラクトに対する誤った知識に基づく誤った報道が目立ちます。

イーサなど仮想通貨で使用されている技術「ブロックチェーン」は金融の世界で影響力を強めつつあり、将来的には有用性が証明されるとの予想もある。ただ、ニューヨーク・タイムズは、ここ数か月間コンピューターの専門家の間から、イーサリアム・プロジェクトのコードに脆弱(ぜいじゃく)性があると指摘する声が上がっていたと伝えている。

ここだけ見るとブロックチェーンを利用しているイーサリアム事態に脆弱性があったかのような書き方ですが、脆弱性があったのはイーサリアム上のプロジェクトである「The DAO」内のコードです。逆にいうと、「The DAO」上で書かれたコードは、誰の手にも止めることができずに正しく実行されたわけです。さらに、DAOアタッカーに資金を奪われたものの、コードが忠実に実行されているおかげで27日間の足止めをできているわけです。

実際にこれが銀行のサーバーにハッキングをされた場合だと、もうすでにどこにあるかもわからない場所で使われているはずです。今後の動きがどうなるかにもよりますが、まだ資金を取り返す余地があるという事実にも触れてほしいものです。

繰り返しになりますが、問題があったのは、「The DAO」のコードであり、イーサリアムのブロックチェーンないしスマートコントラクトには問題がなく正常に機能しているということです。

残された27日間のうちに、コミュニティがどのような決断を出すか見守りたいと思います。どちらにせよ、日本国内においては、また逆風となってしまうのかもしれません。

(追記)
ニューヨーク・タイムスの元記事には、The DAOに関する記述があるにも関わらず、それを元にした日本の記事ではすっぽりと抜け落ちています。なんとも立派な記事ですね…

メディアの更新は、日本の暗号通貨(仮想通貨)およびブロックチェーンに興味がある方の知識向上を目指して行われております。基本的に非営利活動となりますので、ぜひビットコインにて寄付をいただけると活動の励みとなります。路上での投げ銭のように数百円単位で送れるのもビットコインの面白いところです。

寄付用ビットコインアドレス:1AFjSHaZGGLCGz2Px1iqEEGwyvbaoy9r1w

寄付用ビットコインアドレス

寄付用ビットコインアドレス要望などございましたらぜひSNSやメールよりご連絡ください!

ブロックチェーン総合研究所【BRI】

ブロックチェーン総合研究所の公式ページです。BRIからのブロックチェーン及び仮想通貨(暗号通貨)に関する調査及びレポート…

森川 夢佑斗[Muuto Morikawa]

Written by

ex-京大法、株式会社Ginco CEO、著書「ブロックチェーン入門」https://goo.gl/egQEXW

ブロックチェーン総合研究所【BRI】

ブロックチェーン総合研究所の公式ページです。BRIからのブロックチェーン及び仮想通貨(暗号通貨)に関する調査及びレポートを掲載しています。調査依頼およびコンサルティングのお問い合わせは、メールよりお願いします。

森川 夢佑斗[Muuto Morikawa]

Written by

ex-京大法、株式会社Ginco CEO、著書「ブロックチェーン入門」https://goo.gl/egQEXW

ブロックチェーン総合研究所【BRI】

ブロックチェーン総合研究所の公式ページです。BRIからのブロックチェーン及び仮想通貨(暗号通貨)に関する調査及びレポートを掲載しています。調査依頼およびコンサルティングのお問い合わせは、メールよりお願いします。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store