ビットコインの情報サイトの運営者ブログ

サイトには掲載していない仮想通貨に関する時事的な情報や個人的な感想など。中級者以上向け。

The DAOへの攻撃によりETH採掘者たちに突然突き付けられた決断

※速報的な記事で調べ切れてない部分もあるので内容の間違いはご容赦ください。

The DAOの解説記事については、正直個人的にあまり興味がなかったので先延ばしにし続けてましたが、記事を書く前に大事件が起きてしまったようです。今日17日の昼過ぎ頃にThe DAOのコントラクトへの不正な攻撃が行われ、総資産の30%にあたる350万ETH以上が引き出されました。

攻撃の概要

現在は事件が起きたばかりでありよくわからないところもあるので、詳細は以下の記事を引用しておくにとどめます。

TheDAOが暴落、崩壊の危機に イーサリアムも道連れに(更新あり) | ビットコインの最新情報 BTCN|ビットコインニュース

一言で言えば、現在稼働しているDAOの「子DAO」を新しく作成しその「子DAO」にETHが移されたというかたちになります。新しくDAOを作成した際には27日間はコントラクト内のETHの移動は一切できないので、少なくとも27日間は犯人もETHを売ることはできません。

この攻撃は、The DAOのコントラクトコードのバグ・脆弱性に起因するものであり、Ethereumのブロックチェーン自体のバグが原因ではなく影響もありません。コードのバグというのは驚くような話ではなく、プログラミングにバグは必ず付きまとうものなので、Ethereumのコントラクトコードのバグに関する懸念は非常に多くの人が指摘していますし、実際にThe DAOのコード自体の脆弱性に関する指摘もいくつかありました。

Ethereum開発者から発表された対応策

今回の事件を受けて、Ethereumのリード開発者のVitalik Buterinから以下のような対応策が発表されました。

1.ソフトフォーク(後方互換性のあるアップデート)により引き出されたETHを利用不可にする

2.その後ハードフォーク(後方互換性のないアップデート)により引き出されたETHを取り戻す

Vitalikはブロックチェーンを巻き戻すロールバックではないと言っています。すべての取引の状態を攻撃前に戻すわけではなく、攻撃後の他の取引は影響を受けないので確かにその通りですが、「検閲・改ざんが難しい/不可能」というのが多くの人にとって大きなEthereumの信頼性の根拠になっているため、もしこの対応を行うことになった場合、ETHは取り戻せたとしても信頼性に大きな傷がつく可能性が考えられます。

ソフトフォークかハードフォークかという問題でもなく、特定のETHを利用不可にするということはブラックリスト化するということなのでまさに「検閲」にほかなりません。詳細はわからないのでなんともいえませんが、その後のハードフォークも改ざんそのものに見えます。

また、Ethereum自体のバグではなく、一ユーザーが勝手に書いたコントラクトコード(Ethereum開発チームもある程度関わっているようですが・・・)のバグにすぎないという点も重要です。

判断は採掘者に委ねられるが・・・

開発者が提案をしたとしても実際にブロックチェーンを構築しているのはProof of Workの計算をしているマイナー・採掘者たちです。マイナーが新バージョンのノードを誰も利用しなければ対応策は実施されません。27日後には攻撃者がETHを引き出せるようになってしまうため、遅くとも27日以内にはマイナーが決断する必要があります。

通常のアップデートではフォークを拒否するということは考えられませんが、今回の場合Redditなどを見るとかなりの割合の人が対応策に反対しており、拒否したいと思うマイナーも多いかもしれません。ビットコインのCoreとClassicのように開発チームが分裂する可能性もゼロではありません。

過去の事例

実はハッキングによる盗難によりブロックチェーンのロールバックが検討された事例というのは今回が初めてというわけではなく、過去にもありました。

例えば、Vericoinという仮想通貨の場合はMintpalという取引所がハッキングを受けたことにより全発行量の30%にあたるコインが盗難されました。VericoinはProof of Stakeを採用していたので、セキュリティ上の重大な懸念があるとしてロールバックを決断・実行され盗難はなかったことになりました。NXTも取引所のハッキングにより、総発行量の約5%にあたる資産が盗難され、ロールバックが検討されたこともありましたが、結局ブロックチェーンの信頼性が大きく損なわれるとしてロールバックは行わないこととされました。

果たしてEthereumコミュニティはどのような決断をするのでしょうか?