マナティ

入門 暗号通貨

第11回 The DAO事件

連載『入門 暗号通貨』第11回。分散型投資ファンド組織The DAOと、2016年6月17日に起こった事件「The DAO Attack」・ハードフォークについて解説します。

65061_ext_02_0.jpg

はじめに

本記事ではStock.it社が立ち上げた分散型投資ファンド組織The DAOと、2016年6月17日に起こった事件「The DAO Attack」について述べたいと思います。

DAOとは

DAOとはDecentralized Autonomous Organizationの略で、日本語訳すると、自律分散型組織となります。もちろんアクティブなメンバーが中心的となるのですが、中央で統率する誰かがいるわけでもなく、投票などによって物事を決めたり作っていく組織のことです。イメージとしてはOSSの運営の進め方が近いですね。あとはGitHubでのやりとりの仕方にも近いかもしれません。

The DAOとは

[The DAO]とは、[Stock.it]社が立ち上げた分散型投資ファンド組織です。このThe DAOはEthereum上でスマートコントラクトを利用しています。これに参加するには資金をThe DAOトークン作成期間にThe DAOにETH(Ether)を送金しThe DAOトークンを手にする必要があります(もちろん取引所でも買えました)。

この資金集め(クラウドファンディング)で当時のETH発行総量の約1/10である約7,620,000ETH(当時のレートで150億円程度)を集めており、クラウドファンディング資金調達ランキングで1位に輝きました。

https://en.wikipedia.org/wiki/List_of_highest_funded_crowdfunding_projects

The DAOのしくみ

Proposal

The DAOはファンドなので投資先を決めます。この投資先を決定するのに、なんとThe DAOトークンの投票で決めます。また、この投資先を提案(Proposal)するのは誰でもできますが、Curatorと呼ばれる人に承認されなければなりません。このCuratorは初期設定では、Ethereum FoundationとSlock.itのメンバーが主でしたが、The DAOトークンによる投票によって罷免 or 就任させることができます。

そして、投資先で得た利益の配当を、投資先用独自トークンを持っていることで得ることができます。この投資先用独自トークンはThe DAOトークン保有者に配られ「投資した額のEther/最初にファンドにあったEther」分のThe DAOトークンは消滅します。

Split

また、The DAOにはSplitという機能があり、The DAOトークンをETH(Ether)に変えることができます。 流れとしては以下になります。

1. 資金を自分のアドレスに動かすという提案(Proposal)を提出する
2. 別のアドレスに提案した分のETHが移動する(子DAO)
3. そのアドレスから28日後から、資金を移動する命令を出すことで引き出せる

そして、このしくみがThe DAOを滅ぼすことになるのです。

The DAO Attack

2016年6月17日の日本時間5時ごろ、攻撃が始まりました。

https://twitter.com/TrendStream/status/743715990828003328

筆者はThe DAOトークンをそこそこ持っていたのですが、あれよあれよというまに資金が大量に抜かれていく様、市場が大混乱してETHの値段が一気に半分になる&DAOが1/3になるチャート、過負荷でETHとDAOが取引できなくなるPoloniex、混乱する取引所・・・。今思い出しただけでも恐ろしいです・・・。

攻撃者は子DAOに不正コードを埋め込み、Splitをループする処理をするように仕向けました。こうして、約50億円相当のETHが盗まれたのです。

そして面白いのは、WhiteHat(ホワイトハッカー)が、同じ手法を使い、残っていた資金を避難させました。こうして全額盗まれる事態は避けられました。

さて、この資金は28日の間動かせません。このETHはどんな人でも動かせません。たとえSlock.itでも攻撃者でも。ですが、Ethereumに変更を加えれば資金をコントロールすることができます。

Ethereumコミュニティーと開発者の対応と、Ethereumに対する影響

Ethereumを提唱し、開発者であるVitalik Buterinは、[直後のブログ]では、ソフトフォークを提唱しました。これにより、攻撃者の資金は28日を過ぎても動かせなくなります。また[Slock.itのブログ]ではソフトフォーク後ハードフォークを提唱していました。ハードフォークを行うことで、資金流出をなかったことにし、解散するというものです。

ソフトフォークとハードフォーク

ソフトフォークとは、もともとあったルールを厳しくし、新バージョンのソフトウェアで制限するアップデート方法です。これにより、新しいソフトウェアをインストールしているノードは 旧バージョンのソフトウェアでマイニングされたブロックを拒否し、旧バージョンのソフトウェアをインストールしているノードは新バージョンのソフトウェアでマイニングされたブロックを承認します。これによりブロックチェーンの分岐は一時的なものになります。
ですが旧バージョンの能力が51%以上にならないと新バージョンのブロックは旧バージョンのブロックに追いつけないため、ある程度コミュニティの支持がないとこのソフトフォークは成功しません。

ハードフォークとは、もともとあったブロックの受け入れるルールを簡単にし、旧バージョンのソフトウェアで無効だったものを有効とするソフトウェアのアップデート方法です。 これにより、新バージョンのノードが新しい規格のブロックを作成すると、旧バージョンのノードはそのブロックを拒否します。逆に、新バージョンのノードから見ると旧バージョンのトランザクションには不整合が発生するため、旧バージョンのノードが作成したブロックを拒否します。これによりブロックチェーンは永続的に分岐します。これは何があろうと1本にまとまることはありません。

この方法は様々な論議を呼びました。

意見1「何もしない」

ハードフォークも、ソフトフォークも、言い方を変えれば「検閲」。Ethereumの理念、Bitcoinの理念に反する。

意見2「ソフトフォーク」

ソフトフォークを行い、使えなくし事実上発行量が減ったようにする。これにより攻撃者が空売りやスパムトランザクションなどでEthereumを攻撃できなくする。もちろんETHは返ってこない。

意見3「ソフトフォーク+ハードフォーク」

ソフトフォークでいったん資金を凍結し、その後ハードフォークする。これにより、The DAOの開発元であるSlock.itに対する訴訟や法的責任を回避する。

結局Ethereumは、ETHによる投票の結果なども踏まえて、意見3 を選択しました。ですが、ソフトフォークにバグが見つかり、いきなりハードフォークする事にしました。

こうしてハードフォークは行われ、ETH流出はなかった事にされましたが、この行為に反対派が旧チェーンを使い続け、ETCとなっているのです。

「第12回 トークンを発行してみよう」に続きます。最終回です。

著者プロフィール

うどん(著者)
Mt.Goxの件からBitcoinに気づき、興味を持つように。その後、そのほかの暗号通貨にも手を出すようになる。Twitterやブログなどで情報発信中。
ブログ:http://udon-cryptocurrency.hatenablog.com/
Twitter ID:@udon_crypto
Bitcoin Address:1Mmr1ff9bYTFzjDx5hgDNijsVh6B88iuV3