EOS(イオス)



EOS(イオス)は、分散型アプリケーションプラットフォームです。


1.EOS(イオス) 概要

2017年6月26日、EOSのICOが行われました。驚くべきことは、ICOがスタートしてからわずか3日間で、時価総額が世界第9位になったことです。ICOブームが背景にあったことを看過しても、EOSに対する投資家の期待値がとても高かったことがうかがえます。そして日本でも話題になったEOSのホワイトペーパーに記載されていたとされる2つの文言です。

  • ① EOSトークンは如何なる権利、用途、目的や機能を持たない
  • ② EOSトークンは配布終了から48時間後に移転不可になる

これらの文言だけをみると、EOSに対して良い印象を受けないことは仕方がないことかもしれません。以下は①については免責事項の範囲だということを前提として解説させていただきます。


2.EOS(イオス) VS Etherium(イーサリアム)

EOSは、分散型アプリケーションプラットフォームになることを目的としているので、当然、イーサリアムと競合します。そこで、EOSとイーサリアムを比較してみました。詳しいことは次の章から述べるEOSを支える仕組みで述べるので、ここではざっくりとしたイメージを持っていただければ良いです。

■違い①:一般的な機能の提供

分散型アプリケーションを実装する際に、その多くが使用する一般的機能をイーサリムが提供しないことに対して、EOSは積極的に提供しています。例えば、役割ベースのアクセス許可、インターフェース開発用のWebツールキット、自己記述型インターフェース・データベーススキーム、および宣言的許可スキームの導入などです。これらによって、開発者の手間を削減されるのは勿論、高度な機能を実装できます。

■違い②:コンセンサスアルゴリズムとガバナンス

イーサリアムは、PoW(→PoS)を採用しており、EOSはDPOSを採用しています。それによって、ブロック生成者の報酬形態は違ったものになります。DPOSについては次の章で詳しく述べます。またイーサリアムは、壊れたアプリケーションを修正することが難しいですが、EOSは壊れたアプリケーションをフリーズして修正するメカニズムが導入されています。

■違い③:スケーラビリティ

スケーラビリティの点では、EOSはイーサリアムと比べた時に2つの利点があります。1点目は、1秒間に処理できるトランザクション数です。EOSが300,000トランザクションを捌けることに対して、イーサリアムは50~100トランザクションしか処理できません。2つ目は、EOSソフトウェアでは、トランザクション料金が発生しないことです。これらの利点は、Grapheneテクノロジ、並列化、非同期通信によって実現されます。それぞれの詳細については、ここでは言及しません。これらの利点を活かして、EOSはイーサリアムでは実践的ではなかった、ビジネスユースケースを生み出すポテンシャルがあります。


3.EOSを支えるシステム① DPOS

EOSはDPOSというコンセンサスアルゴリズムを採用しています。DPOSでは、ブロック生成者がEOSトークン保有者(ユーザー)の投票によって選ばれる仕組みです。EOS保有者は、ブロックを正しく承認させるために、適切な代表者を選びます。また、EOSトークンの保有量が多いと、それに比例して、ユーザーの影響力も増えていきます。EOSのブロックはそれぞれ、21ラウンドで生成されます。各ラウンドごとに、一人のブロック生成者が割り振られ、3秒ごとにブロックを作成していきます。もし、スケジュール通りにブロックが作成されない場合はスキップされます。一つか、それ以上のブロックがスキップされると、ブロックチェーンに6秒あるいはそれ以上のギャップが生じます。

基本的に、DPOSブロックチェーンでは、いかなる分岐も存在しません。その理由は、簡単にいえば、ブロック生成者同士がPoWのように競争するのではなく、ブロックを生成するために「協調」するからです。少数のブロック生成者から生み出されるブロックチェーンより、多くのブロック生成者によって生み出されるブロックチェーンの方が、いち早く長くなることができます。加えて、ブロック生成者は、同時に2つの分岐上にブロックを作成する必要はありません。これらをブロック生成者が見つけることができれば、その人はおそらく投票されるでしょう。そのような二重生産の暗号的証拠は、攻撃者を自動的に排除するために使用することもできます。

EOSソフトウェアでは、すべてのトランザクションにおいて、直前のブロックヘッダーのハッシュを含めることを必要とします。これには2つの目的があります。1つ目の目的は、該当するブロックを含まない分岐において、トランザクションが重複することを防ぐことです。2つ目の目的は、特定のフォーム上の、主にユーザーと利害関係者が存在するネットワークに通知することです。不正なチェーンが正当なチェーンからトランザクションを移動させることができないのと同じように、すべてのユーザーは時間をかけて、不正なチェーンが作成されないような、ブロックチェーンを承認することに終始します。これらの仕組みは、「Transaction as Proof of Stake (TaPoS)」と呼ばれます。


4.EOSを支えるシステム② アカウント

EOSソフトウェアは人間が理解可能一意な2~32の文字列を名前としてアカウントに関連づけることができます。名前は、アカウント作成者が選ぶことができます。分散化ネットワークにおいては、ほんのわずかなコストで新しいアカウントを作ることができ、他のアプリケーションとも併用可能です。

各アカウント同士で、メッセージの送受信が可能であり、メッセージを処理するスクリプトを定義することができます。EOSソフトウェアは、各アカウントに独自のプライベートデータベースを提供して、専用のメッセージハンドラによってのみアクセスすることができます。

アカウントのメッセージが適切に承認されているかどうか、ロールベースのアクセス許可管理によって判断されています。これにより、誰がいつ何をやることができるのかについて、細部に渡り制御することができます。アカウントは、名前付き許可レベルを定義することができます。例えば、Steemブロックチェーンを例にあげると、Owner(所有)、Active(アクティブ)、Posting(投稿)という3つの名前付き許可レベルが定義されています。EOSソフトウェアでは、この概念がより一般化されています。

EOS.IOソフトウェアによって、各アカウントは、任意のアカウントの名前付きメッセージハンドラグループと独自の名前付きアクセス許可レベルとの間のマッピングを定義することができます。@aliceから@bobに 「Action」というタイプのメッセージを配信する場合、EOSソフトウェアは@aliceが@ bob.groupa.subgroup.Actionの許可マッピングを定義しているかどうかを最初にチェックします。マッピングが識別されると、署名の権限は、マルチ署名プロセスと名前付きアクセス許可に関連付けられた権限を使用して検証されます。


5.EOSを支えるシステム③ アプリケーションの並列実行

EOSソフトウェアブロックチェーンでは、ブロック生成者が独立したスレッドにメッセージの配信を編成して、それらを並列に評価可能にします。ブロック生成者は、並列アルゴリズムを利用することで、トランザクションをスケジュールすることができます。

あるアカウントが別のアカウントにメッセージを送信してから応答を得るまでの時間を「待ち時間」とします。理想は、2つのアカウントが1つのブロック内でメッセージを3秒間待つことなく交換できるようにすることです。EOSソフトウェアでは、各ブロックをサイクルに分割、各サイクルをスレッドに分割、各スレッドには一連のメッセージを含むことで、階層構造を形成します。詳細は省きますが、これによりブロックはすべてのスレッドを並列に処理することができ、待ち時間を短縮できます。


6.EOSを支えるシステム④ トークンモデルとリソース使用料

EOSソフトウェアを使用するブロックチェーンでは、3つのリソースがあります。それは、ディスクとCPU、RAMです。これらは、アプリケーションによって消費されます。ディスクには、一時的な使用と長期使用という2つのコンポーネントがあります。ブロックチェーンはすべてのメッセージのログを保有して、これによりすべてのアプリケーションの状態を再編成することができます。計算上の負債(CPU)は、メッセージログから状態を再び戻すために必要な計算です。計算上の負債は慎重に管理することが重要です。RAMにはアプリケーションロジックからアクセスできる情報を記憶します。例えば、投稿/コメント、投票数およびその他プロパティなどです。

ブロック生成者は、ディスクとCPU、RAMの状態に関する使用可能容量を公開します。EOSソフトウェアでは、それぞれのアカウントは保持するトークンの量に比例して、使用可能な容量が決定されます。もし、総発行数の1%にあたるトークンを保持する場合は、RAM容量の1%を使用できる可能性があります。また、EOSソフトウェアを利用するブロックチェーンは、ユーザーに直接支払いを求めていません。そのため、それぞれのプロジェクトが独自の収益化モデルを実践することができます。

EOSトークンの利用者は、ディスク容量を明け渡すかレンタルすることができます。また、ディスク容量は、トークン価格と連動していないことに注目です。。EOSソフトウェアを利用するブロックチェーンは、ブロック生成者がトークンの価値とは無関係に、トークンごとに使用可能なディスク、CPUそれからRAMといったリソースを増やすことができます。

EOSソフトウェアを採用するブロックチェーンは、ブロックが生み出されるたびに、ブロック生成者に新しいトークンを付与します。これによって、EOSトークンが新規発行されます。作成されるトークン量は、すべてのブロック生成者によって発行された希望支払額の中央値に基づいて決定されます。EOSソフトウェアは、トークン供給の年間増価額が5%を超えないように設定されている場合があります。


7.EOSを支えるシステム⑤ ガバナンス

ガバナンスは、アルゴリズムでは定義できない主観的な問題について、人々が合意に達するためのプロセスです。例えば、ブロック生成者には、アカウントを凍結し、エラーのあるアプリケーションを更新し、基盤となるプロトコルに対してフォーク変更を提案する、限定的で承認された権限が与えられています。また、EOSソフトウェアは、ブロックチェーンがPtoPの利用規約または、それに署名するユーザー間の拘束力のある契約(Constitution)を確立することを可能にします。これによって、ユーザー間の義務を定義して、彼らの争いを解決しやすくします。ユーザーに悪影響をもたらす有害なバグであったりセキュリティの不正活用を修正するために、ソフトウェアに変更が必要な場合、ブロック生成者はプロセスを加速させることがあります。それらは、規約に違反する可能性がありますが、緊急時の対応として、承認される場合があります。


8.EOSを支えるシステム⑥ スクリプトとバーチャルマシン

スクリプト言語と仮想マシンの詳細は、独自の実装の詳細であり、EOSテクノロジの設計とはほとんど関係がありません。ただし、適切にサンドボックス化されたスクリプト言語とあるいは仮想マシンは、EOSソフトウェアAPIと統合することが可能です。EOSのテクニカルホワイトペーパでは、特定の言語や仮想マシンの詳細は、説明されていませんが、EOSソフトウェアをベースにするブロックチェーンでは、現在使用されている仮想マシンが2つあります。

1つ目の仮想マシンは、Webアセンブリ(WASM)です。Webアセンブリは、性能の高いWebアプリケーションを実装するための新しいWebスタンダードです。いくつか小さな変更を加えることで、アセンブリをサンドボックス化することができます。Webアセンブリの長所は、業界の幅広いサポートを受けられることと、CあるいはC++など、開発者にとって馴染み深い言語でコントラクトを開発できることです。

2つ目の仮想マシンは、Ethereum仮想マシン (EVM)です。EVMは既存のスマートコントラクトのほとんどで使用されています。これを用いることで、EOSソフトウェアベースのブロックチェーンの内部で独自のサンドボックス内で実行でき、一部のコントラクトでは、他のEOSソフトウェアブロックチェーンアプリケーションと通信をすることができると考えられています。


9.EOSを支えるシステム⑦ 相互ブロックチェーンコミュニケーション

EOSソフトウェアは、ブロック間通信を簡単に行えるように設計されています。これは、メッセージの存在証明と一連のメッセージの証明の生成を容易にすることで、実現することができます。まず、Light Client Validation (LCV)という検証プロセスの目的を考えてみましょう。その目的は、軽量のデータセットを追う人が検証できる、軽量の存在証明を生成できるようにすることです。これは、特定のトランザクションが特定のブロックに含まれていること、そして、そのブロックが特定のブロックチェーンの検証済み履歴に含まれていることを証明することで達成できます。

次に、チェーン間通信をする場合、ブロック生成者は、トランザクションが有効な入力として受け入れる前に、他のブロックチェーンによって不可逆に確認されることを100%確信するまで、待たなければなりません。具体的には、DPOSを3秒ブロックと21人のブロック生成者によって行わるため、およそ45秒かかります。

最後に、EOSソフトウェアはブロックチェーンの完全性をどのように証明するのかについて説明します。まず一つ頭に入れておくべきことは、最新の取引すべてを証明することは不可能です。しかし、取引履歴に隙間がないことを証明することはできます。これは、すべてのアカウントに配信されるすべてのメッセージにシーケンス番号を割り当てることで実現することができます。つまりユーザーは、シーケンス番号を用いて、特定のアカウント用のすべてのメッセージが処理され、それらが順番に処理されたことを証明できます。

以上、EOS(イオス)の概要と仕組みを解説してきました。日本語情報に踊らされることなくEOSが適切に評価される必要があるでしょう。


HP https://eos.io/
ウォレット(公式)
ティッカー(通貨単位) EOS
取引承認システム DPOS
インセンティブ
発行枚数 1,000,000,000 EOS
取り扱い取引所 バイナンス(Binance)
ビットフィネックス(Bitfinex)