DAO Attackの全貌解説!消えた360万ETH、原因や対策、その後【Bitcoinニュース】

2016年6月17日、仮想通貨業界に大きな波紋を呼んだ「DAO Attack(DAO Hack)」。
Mt.Gox以来の事件と騒がれていますが、Mt.Gox事件同様、誤報も多く飛び交っています。
ブロックチェーン仮想通貨に対する信頼がまだまだ低い日本。
この事件でさらに不信感を抱いた方も多くいらっしゃるかと思います。
そこで、事件の正しい概要を簡単にまとめました。
※2016年8月10日、ハードフォーク後の現在の状況を加筆しました。


《目次》
(1)DAO Attackの概要
(2)用語説明
(3)DAO Attackの原因
(4)DAO Attackの流れ
(5)事件への対策
(6)事件の誤解、今後の仮想通貨業界
(7)ハードフォーク後から現在


 

(1)DAO Attackの概要

DAOの機能を利用し、The DAOにあるetherが、DAOアタッカーのアドレスへ送金されました。
送金額は360万ETH(ETHは通貨の単位、事件当時の価格は約52億円相当)といわれています。
※価格はレートによって変動します。
 

(2)用語説明

事件に関する専門用語を簡単に説明します。
Ethereum
取引で行われる契約をブロックチェーンに書き込み、契約内容を実行する仕組み
【Ether】
Ethereum内で利用する仮想通貨。通貨単位はETH。
DAO
自律的分散組織
【the DAO】
DAOを実現したプロジェクトの一つ。Ethereumの仕組みを利用して、ブロックチェーン上で決めたルールに従い、資金を集めて投票し、その投票が条件を満たしたら自動的に特定のプロジェクトに投資します。
投資の利益が出たら、事前に決めたルールに従い自動的に利益が分配される仕組みです。

(3)DAO Attackの原因

the DAOのSplit機能と、DAOの報酬を送金する機能を利用しています。
Split機能とは、DAOの運営に賛同をしない場合、自分がDAOに貯めていた資金をDAOから切り離し、新しいDAOを作成できる機能です。
この機能を実行するには、DAOへの参加者に実行の承認をしてもらう必要があり、その記録はブロックチェーン上で確認することができます。
報酬の送金機能は、送金の指示がなされると「特定の報酬を特定のアドレスに1度だけ送金する」という機能ですが、実は1度の指示に対して何度も送金を行うことが可能という穴がありました。
DAO運営側は、まだDAOは配当する報酬がないため、実質何の問題もないとしていましたが、
今回のDAO Attack事件では、この穴を巧妙についた手口が使われています。

(4)DAO Attack事件の流れ

まず、Split機能を利用し、DAOから独立した自分のDAOを作成します。
作成したDAOに、もともとのDAOにあった自分の資金を移動させます。
資金の移動が完了する前に、報酬の送金機能を利用し、報酬も自分の資金に送金します。
報酬の1度の指示で何度も送金されるので、資金がどんどん追加される状態になります。
こうして、新しく作成したDAOへ資金の送金が完了した頃には360万ETHが送られてしまいました。
ここで重要なのは、不正利用というわけではなく、the DAOの仕組みの穴を突いた送金ということです。
ブロックチェーンやEthereumに問題があったのではなく、the DAOのプログラムに脆弱性があったことが、この事件の原因と言えます。
 

(5)事件への対策

Split機能を使った新しいDAOにある資金は、27日間は移動ができないという制約があります。
つまり、DAOアタッカーが資金を利用できるようになるまでは、27日間の猶予があるということです。
対策案として、3つの方法が提示されています。
①資金を明け渡す
②ソフトフォークを行い、取引を無効化
③ハードフォークを行い、取引自体をなかったことにする

※ソフトフォーク、ハードフォークとは
もともと「フォーク」という言葉はソフトウェアの開発の用語で、なんらかの要因で仕様が変更されるときに使われます。
ソフトフォークは、将来にたいして互換性があります。
紙幣で例えると、偽札が増えたので、最新の透かし技術を導入した新札を発行したとします。
旧札も有効ですが、新札はより狭い範囲でより厳格な条件をもったものになります。
古いものも有効ですが、新しいもののほうが安全だということで、新札が広まっていきます。
これがソフトフォークです。
ハードフォークは、互換性が全くありません
紙幣に例えると、新札切り替えに当たります。
ある時からお札が新札に切り替わり、これまでの旧札が無効になる。このようなことをハードフォークと言います。
対策案を順に説明していきます。
①資金を明け渡す
DAOアタッカーに資金を明け渡すというものです。
※DAOアタッカーは不正利用ではなく、適切な方法で機能を利用したに過ぎないと主張。
②ソフトフォークを行い、取引を無効化
DAOアタッカーが資金の移動先に使ったアドレスを凍結するというものです。
銀行やカード会社が利用者の口座やカードの利用を停止する対応と似ています。
しかし、この方法ではそのアドレスに保有されている360万ETHも利用できなくなるので、被害にあったもともとの資金を取り戻すことができません
③ハードフォークを行い、取引自体をなかったことにする
ブロックチェーンの記録を360万ETHが送金される前まで遡り、なかったことにするというものです。
イーサリアムネットワークに参加しているノード(ビットコイン・ネットワークに参加しているプログラムの一つ一つ)の過半数が賛成すれば実行されます。
分散化という相反する対策なので、コミュニティ内でも大きな波紋を呼んでいるそうです。
 
とはいえ、DAOアタッカーも27日間何もしないわけではありません。
DAOコミュニティにて、フォークの提案に反対したノードには、100万ETHを分け与えると発言しています。(この発言が本人かのものであるかは不明です)
 

(6)事件の誤解、今後の仮想通貨業界

今回の事件は、あくまでもthe DAOで書かれたコードの脆弱性が大きな原因です。
しかし、ニュースではEthereumのプロジェクトの脆弱性が問題視されていたり、DAOではなくEthereumから不正送金が行われたなど、誤った報道が目立ちます。
また、この事件は、誰にも止められずにコードが正しく実行された結果でもあります。
報酬の送金然り、27日間の猶予も正しく機能しています。
これが銀行のサーバーへのハッキングの場合だと、資金がどこにあるかもわからなくなっているか、すでに使用されていることでしょう。
まだ資金を取り返す余地があるという面では、
銀行よりも安全性が高いという見方もできます。
この事件を表面だけ見ると、「大金が不正アクセスで盗まれた」と思い、
仮想通貨に対して不信感を持つ人も多くいるかもしれません。
 
ですが、きちんとプログラム通り実行され、尚且つ送金された資金の場所もわかっており、
その資金は27日間使用することも移動することもできないということを考えれば、
不完全ではあれど、決して不安定なものではないと考えてよいはずです。
仮想通貨という概念自体、2009年に誕生したビットコインから始まった、まだまだ新しいものです。
ブロックチェーン技術は金融業界でも注目されており、仮想通貨も法案が可決され、1年以内を目処に法整備もされます。
ネガティブなイメージで素晴らしい技術や機能の発展が滞らないよう、
しっかりと事実を捉えていく力が大切なのではないでしょうか。
 

(7)ハードフォーク後から現在

DAO Attackを受けて、Ethereum財団ではハードフォークでの解決を決定しました。
日本時間7月20日22:27にハードフォークを敢行し、多くのマイナーは新たなクライアントに移行しましたが、Ethereumの取引高で世界最大と言われる「Poloniex」がEthereum Classicを取り入れ、ハードフォーク以前のイーサが取引可能になるという事態になりました。
ハードフォークにより新生Ethereumと旧Ether、つまりEthereum Classicという2つの道ができたのです。
これを受けcoincheckでは、ハードフォーク開始前にEthereum残高を持つユーザーに、同額のEthereum Classicを付与するという対応をいたしました。
Ethereum Classicの付与につきましては、こちらをご覧ください。
Ethereum Classic売買機能をリリースします!
coincheck ビットコイン取引所