わかりやすくブロックチェーンを説明してみる(第7回):イーサリアムとは

<連載目次>

はじめに

ブロックチェーンの本質は「データ分散(コピー)」技術です。

前回(第6回)まででビットコインとブロックチェーンについての説明を終えました。「わかりやすく」説明できたかは大変疑問が残るところではありますが・・・。

今回(第7回)は、ビットコインとは別の暗号資産である「イーサリアム(Ethereum)」について触れたいと思います。

なお本連載はビットコインやブロックチェーンを技術的な側面から解説することを目的としています。ビットコインへの投資を勧める連載では決してありません。

ビットコインとイーサリアムの違い

ビットコインとイーサリアムの決定的な違いは、ビットコインはブロックチェーンに送金情報だけを保存するのに対して、イーサリアムは送金情報以外にプログラムやプログラムが扱うデータも保存できるということです。

ここでいうプログラムとは、スマホアプリなどに相当するソフトウェアのことです。

ビットコインとイーサリアムの主な違いは以下の通りです。

上図にもあるように、イーサリアムは分散型アプリケーションのプラットフォームです。分散型アプリケーションはDApps(Decentralized Applications)と呼ばれています。DAppsついては次回説明する予定です。

ブロック生成時間はビットコインが約10分なのに対してイーサリアムは約12秒と非常に短くなっています。しかしちょっと待って下さい。1人を決めるための計算問題を解く時間が短いと、多くの人がほぼ同時に手をあげてしまい、その結果ブロックチェーンが頻繁に分岐(フォーク)してしまいます。これでは世界中のブロックチェーンの中身を同じすることが困難になるのではないでしょうか?そうならないようにビットコインでは約10分となっているのですから。

ではイーサリアムではどうやってこの問題を解決しているのでしょうか?

「長さ」ではなく「重さ」を優先

ビットコインのブロックチェーンでは、みんなの取引台帳(ブロックチェーン)の中身が同じになるように以下のルールがありました。

  • みんな長い方のチェーンをマイニングしていきましょう

たったこれだけでのルールで、みんなの取引台帳(ブロックチェーン)の中身が同じなるということでした。

一方、イーサリアムのブロックチェーンにおけるルールは以下のようになっています。

  • みんな重い方のチェーンをマイニングしていきましょう。

これはどういうことでしょうか?詳細な説明は専門書に譲るとして、概要は以下のような感じです。
まずは下図のようにブロックMでフォークが発生したとします。

上図の場合、A3のブロックの方が長くなったのでB1とB2は無効となります。ここまではビットコインと同じルールです。しかしイーサリアムではB1、B2のチェーンは「uncle」チェーンとしてA3に記録されることになります。

ここで下図のようにC1~C4のチェーンが発生しているとします。

ビットコインの場合はC1-C4がメインチェーンとして選択されます。しかしイーサリアムではA1-A3がメインチェーンとして選択されます。これはA1-A3のチェーンはuncleチェーンも含めると、ブロック総数がC1-C4チェーンよりも多いからです。

uncleチェーンを含めたブロックの総数は「重さ」と呼ばれています。「重さ」は、厳密にいうとブロックの総数ではないのですがイメージとしては総数に相当すると考えてもらってもよいかと思います。

頻繁にフォークが発生しても全員がこの「重い方のチェーンを採用する」というルールに従うだけで、みななのブロックチェーンの中身が同じなるようです。ちょっと不思議な気もするのですが。

なお、この「重さを優先する」方法はGHOST(Greedy Heaviest Observed Subtree)プロトコルと呼ばれています。

無効ブロックにも報酬を

ブロック生成時間が短いともう1つ問題があります。Aさんがマイニングに成功してそれをネットワーク上に通知します。そしてAさんはすぐさま次のブロックのマイニングを開始します。Aさんからの通知はネットワーク遅延のためある程度の時間を経て他の人に伝わります。Aさんからの通知を受けた人達は自分のマイニングを停止し、あらたなマイニングを始めます。でも待って下さい。このときすでにAさんは新たなマイニングを開始しています。つまりAさんはフライングしています。もちろんルール違反ではないのですが。このような状況が起きるのを分かっていてマイニングに参加する人は少ないと思います。なぜなら自分は一生懸命マインングしても負ける可能が高く、しかも負けた場合はご褒美は一切ないのですから。マイニングに参加する人が減ってしまうと極端な話、Aさんがいつもマイニングに成功する可能性が増えてきます。なぜなら競争相手は減るわ、フライングできてるわで。

このような状況(マイニングする人が減ってしまうという状況)をある程度防ぐために、イーサリアムでは無効になったブロックをマイニングした人にもある程度の報酬を与えることになっています。

PoWからPoSへ

現在イーサリアムはビットコインと同じくPoWを採用しています。つまり、計算問題をいち早く解いた人を代表者と決め、その人が台帳に書いたデータを全員がコピーするわけです。

しかし1人の決め方は他にも色々あり、その中にPoS(Proof Of Stake)と呼ばれるものがあります。これは全員で計算問題を解く、というものではありません。イーサリアムでは近々、PoWはやめてPoSに移行する予定です。PoSに関する詳細な説明は書籍やサイトを参照して頂ければと思いますが、以下に簡単に説明してみます。

イーサリアムが予定しているPoSではざくりいうと、「Validator」と呼ばれる人たちの中からランダムな抽選により1人を決めます。「Validator」になるには保証金を事前に支払う必要があります。この保証金のことをStakeと呼んでいます。そしてStakeには利子がつきます。この利子が「Validator」にとってのインセンティブになります。ただしVaidatorに申し込む人が多くなればなるほど、各Validatorへの利子配当は減ってきます。また、保証金の額や預け期間に応じて、各Validatorへの配当も変わってくるのだとは思うのですが詳細については調べていません。

そして選ばれた人(ここではVさんとします)と同じデータを全員がブロックチェーンにコピーするわけですが、Vさんの用意したブロックデータの内容が正しいとは限りません。そこでイーサリアムネットワークに参加している全員でAさんが用意したブロックデータの内容をチェックします。そしてイーサリアムネットワーク参加者の2/3がOKを出せば、Vさんの用意したブロックデータを全員が自分の保存しているブロックチェーンに書き込みます。

もしAさんの用意したブロックが間違っていたり(正規でないトランザクションを含んでいたり)、不正を働こうとした場合、Aさんには罰金が科せられます。

PoSのアイデアが出てきた背景は以下の2つがあります。

  • PoWによる膨大な電力消費
    PoWではマイナーにより多くの計算機資源が使用され、その際の消費電力が非常に大きく問題視されています。
  • マイナーの寡占化
    計算機資源を使った一部のマイナーのみがマイニングに成功する傾向にある。

イーサリアムは現在(2021年5月3日現在)はPoWですが、近々にPoSに移行する予定となっています。

ブロックチェーンの中身はプログラムコードと変数

ビットコインとイーサリアムにおいて決定的に違う点は、ビットコインはブロックチェーンに送金情報だけを保存するのに対し、イーサリアムはブロックチェーンにプログラムコードと変数の値も保存するという点です。

これについては次回(第8回)で説明したいと思います。

次回

今回(第7回)は、イーサリアムについて簡単に紹介してみました。

イーサリアムはビットコインと決定的に違うのは、イーサリアムが「分散型アプリケーションのプラットフォーム」であるという点です。またこの点がブロックチェーンの大きな可能性を示唆してるとされています。

次回(第8回)はイーサリアムのDApps(Decentralized Applications:分散型アプリケーション)について説明したいと思います。

<連載目次>