EOSはイーサリアムブロックチェーンと競合する、Grapheneブロックチェーンベースの分散型アプリケーションプラットフォームとして機能します。
EOSはBlock.one社により開発されており、CTOはBitSharesやSteemitを開発したDaniel Larimer氏です。EOSの最も特徴的なポイントはスケーラビリティ問題を解決したDAppsプラットフォームを目指しているということです。
ブロックチェーンはスケーラビリティ問題に悩まされることになりますが、EOSではどれだけユーザーが増えようとトランザクションが増えようと遅延や手数料増加を起こさない、ということを特徴としていることになります。
そこで、当記事では新しい分散型アプリケーションプラットフォームとしてのEOSの仕組みや良いところ、課題点などについてお伝えしていきます。
EOSとは
EOSとは、スケーラブルな分散型アプリケーションプラットフォームです。分散型アプリケーションプラットフォームといえばイーサリアムがあげられます。しかし、イーサリアムでは現在スケーラビリティが問題になっていてトランザクションの処理遅延、手数料の増加などが今後さらに深刻化してくると考えられています。(最近ではCryptoKittiesが猛威をふるっています)
イーサリアムでもこのスケーラビリティ問題に対してさまざまな解決策を提案し開発が進められていますが、EOSはスケーラビリティ問題に悩まされることないDAppsプラットフォームを目指して開発されているのです。
また、冒頭でEOSはイーサリアムブロックチェーンと競合する、と表現しましたがEOSのブロックチェーンではイーサリアムのEVM(Ethereum Virtual Machine)を動かすことができます。なのでより正確には、イーサリアムブロックチェーンと協同して分散型アプリケーションを広めていくためのプラットフォームになります。
EOSの特徴
Delegated Proof of Stake(DPOS)
EOSで特徴的なのはDelegated Proof of Stake(DPOS)というコンセンサスアルゴリズムを採用していることです。イーサリアムでもPoWからPoSに移行しようとしていますが、EOSはBitSharesやLiskで採用されているDPOSをコンセンサスアルゴリズムとして機能させることで、高速なトランザクションの処理を実現しようとしているのです。
1秒間あたり100,000のトランザクションをさばけるポテンシャルがあるとされており、注目されているコンセンサスアルゴリズムでもあります。
詳しい仕組みについては後述しますが、通常のPoSでは任意のブロック生成者、つまりブロック生成者の意思でブロック生成を試みれるのに対し、DPOSでは投票で選ばれなければブロック生成に参加することができません。つまり、ブロック生成者はブロックを作りたくてもネットワーク内で信用を得て投票で選ばれなければブロック生成に参加することができないのです。
DPOSは投票→ブロック生成という流れが繰り返すだけなのでブロック生成時間は大幅に短縮可能でありスケーラビリティに大きく寄与することが期待できます。(EOSの次期バージョンではブロック生成時間を0.5秒にまで短縮することが計画されています。現在は3秒)
スケーラビリティ問題の解決
EOSはスケーラビリティ問題を解決したDAppsプラットフォームであることが一番の売りです。これは上述したDPOSというコンセンサスアルゴリズムや並行処理、非同期通信などによりトランザクションの処理能力を大幅に向上させることでネットワークが拡大しても問題が起こらないように対処しています。
参考:【まとめ】ブロックチェーンのスケーラビリティ問題に対する11の解決策
無料で使用可能
ビットコインやイーサリアムは、送金をしたりスマートコントラクトを実行したりすると手数料(gas)が取られます。一方、EOSではユーザーは無料でプラットフォームを使うことができます。これにより、現在ユーザーがインターネットでアプリケーションを使っているような感覚でDAppsを使うことを可能にしているのです。アプリ開発側としても、無料で使えるほうがユーザー獲得に有利なはずです。
例えば、ブロックチェーンを使ってデータを保存できるEOS上のストレージアプリケーションでは、ユーザーはデータを保存するときに少額のトークンをロックするだけで利用することができます。
また、ユーザーの手数料が無料だとブロック生成報酬を得ることができませんが、EOSでは新規にトークンを発行しそれを報酬とすることで対処しています。
スマートコントラクトのコードが人間にも読める
イーサリアムのスマートコントラクトはEVMが実行するために0と1で構成されたバイナリデータがブロックチェーンに保存されています。つまり、ブロックチェーンに記録されたコントラクトを後から人間が参照することが困難であるのです。
EOSでは人間にも読めるコードでブロックチェーンにコントラクトが保存されるのでユーザービリティに優れていると言えます。
LCV
LCV(Light Client Validation)とは、いかに簡単にブロックチェーンに記録されたデータを確認することができるかという仕組みです。
例えば、ビットコインでは容量の少ないブロックヘッダーのみを使うことでブロックヘッダーにまとめられているトランザクションのマークルルートを参照し、どのトランザクションがどのブロックに保存されているか確認することができます。
しかし、ビットコインブロックチェーンのブロック生成時間は約10分であるのに対し、EOSブロックチェーンは約3秒です。EOSではこのビットコインの方法では容量がかなり大きくなってしまうのです。
これに対処するために下図のようにブロックチェーンにおけるそれぞれのブロックIDをマークル木形式でまとめることで対処しています。
それぞれのトランザクション自体もマークル木形式でそれぞれのブロックに保存されているので、ブロックチェーンのマークルルートとマークルパスと参照したいトランザクションを使うことで、特定のブロックに特定のトランザクションが含まれていることを検証することができます。これにより、容量的にも時間的にも通信量的にも大幅に効率的な検証を行うことが可能になります。
Delegated Proof of Stake(DPOS)
EOSはスケーラビリティ問題を解決する分散型アプリケーションプラットフォームと期待されていますが、これを達成するためには特徴的なコンセンサスアルゴリズムであるDPOSがしっかりと機能することが必要です。ここではDPOSの仕組みについて見ていきます。
Delegated Proof of Stake(DPOS)とは、ネットワーク参加者の投票によって選びブロック生成者を選び、その選ばれたブロック生成者が実際にブロックを作成していくという仕組みのコンセンサスアルゴリズムです。
「Delegated」とは「委任」などを意味するので、代表者を多数決により選ぶようなイメージです。ブロック生成者がブロックを作ると新しくトークンが作られそのトークンが報酬として生成者に与えられます。ただトークンを作り続けると相対的なトークンの価値が減少してしまうので、1年あたり5%以下の供給を想定しています。
DPOSでは、「投票プロセス」と「ブロック生成プロセス」の2つの要素から成り立っています。投票プロセスではユーザーが正当なブロック生成者に投票することで行われます。
つまり、ユーザーは自らが不正なブロックの作成により不利益を被らないように、正当なブロック生成者のみに投票しようとします。また、ユーザーは持っているトークンの量が多くなると投票における影響力も大きくなります。
以下から、選定されたブロック生成者によってどのようにブロックが生成されていくか見ていきましょう。
EOSにおいては実際には21人(かそれ以上)のブロック生成者が想定されていますが、ここではA、B、Cという3人がブロック生成者であるとして説明していきます。
通常時は3秒ごとにブロック生成者が交代でブロックをブロックチェーンに追加していきます。もし、生成者がブロックを作らなければ、その生成者はスキップされ次の生成者がブロックを追加していくことになります。
ここで、EOSのDPOSにおけるメインチェーンの定義は「最も長いブロックチェーン」であることに注意しましょう。
もしユーザーの1 / 3が悪意を持っていて攻撃者Bをブロック生成者として選出した場合、攻撃者Bは不正なブロックチェーンをフォークさせることができてしまいます。
しかし、ブロック生成者は3秒ごとに交代でブロックを作っていくので、フォークした不正なチェーンはメインチェーンよりも伸びていく速度が遅くなりブロックチェーンを乗っ取ることはできません。(今回のケースだと不正なチェーンはメインチェーンの半分の速度で伸びていくことになります)
また、攻撃者Bが同時に正当なブロックBと不正なブロックB1という2つのブロックを二重生成した場合は、次のブロック生成者Cがどちらを正当なブロックチェーンにするか選ぶことができます。
なので、この場合も攻撃者が少数派である限り、正当なブロックBの後に続けてチェーンを伸ばしていくことが可能です。不正なブロック生成者は二度と通票で選ばれることはありません。
このようにブロック生成者の2/3以上が正当であれば、ひとつの正当なメインチェーンのみを伸ばしていくことが可能となります。
また、EOSではよりセキュリティを高めるためにTaPoSという仕組みが組み込まれています。
TaPoS
TaPoS(Transactions as Proof of Stake、トランザクションのプルーフ・オブ・ステーク)では、全てのトランザクション内に前のブロックのハッシュ値が記録されます。もしその記録されているブロックが正当なブロックチェーン上に存在しなければ、そのトランザクションは不正であると考えるのです。
なぜEOSではTaPoSが必要なのかというと以下の3つの理由があげられます。
- メインチェーン上にないブロック(オーファンブロック)にトランザクションが記録されていくのを防ぐ
- 特定のユーザーがブロックチェーンを分岐させようとしていることをネットワークに知らせる
- ロングレンジ攻撃対策
ロングレンジ攻撃については以下の記事で解説しています。
参考:イーサリアムに導入予定。プルーフオブステークのメリットとデメリット
EOSの課題点
トランザクションがどれだけ増えても遅延が起こらない、手数料も上がらない、ユーザーは無料でDAppsを使えるといったように画期的なEOSですが当然課題点もあげられます。
特に、BitSharesで3年間、Steemで1年間実験されているとはいえ、ネットワークが拡大し長い目で見たときDPOSが問題なく稼働するかどうかは疑問視されます。
例えば、EOSのDPOSは長い目で見ると投票を行うユーザーが少なくなりセキュリティが低下することが考えられます。投票するユーザーが少なくなると不正なブロック生成者がブロックを作りやすくなり、二重支払いなどが起きる可能性が増えてしまうからです。
つまり、ユーザーは投票を行うことで報酬をもらえるなどのインセンティブがないにも関わらず、十分な数のユーザーが投票を行わないと一気に崩れてしまうという仕組みが懸念点になります。