EOS とイーサリアムとを比較しながら、EOS の特徴をまとめてみます。
EOSなんぞや
EOSIO は、 BlockOne というスタートアップ企業がリードして開発しているソフトウェアです。
EOSIO というソフトウェアを、コミュニティによってリリース・運営して、実際稼働しているのが EOS というパブリックブロックチェーンです。
全体
比較内容 | EOS | イーサリアム |
---|---|---|
トランザクション手数料 | 基本無料 スマートコントラクトが負担するかエンドユーザー負担するか選択可能 |
必須(GAS) |
スマートコントラクト更新 | 可能 | 不可 |
コンセンサスアルゴリズム | DPoS + 非同期BFT | PoW(PoS移行計画あり) |
データ構造 | ブロック > リージョン >> サイクル >>> シャード >>>> トランザクション >>>>> アクション |
ブロック > トランザクション |
データ保存領域 | チェーンデータ+スーパーノードメモリ | チェーンデータ |
ユーザ識別子 | 意味ある文字列(12桁、アルファベット+1から5の数字 | ランダムの 40 桁の16進数文字列 |
ユーザ管理 | アカウント+権限 | アドレス |
トランザクション手数料基本無料
イーサリアムはトランザクションを送信するためには、手数料(GAS)が必ず払わないと行けません。
EOS は、基本的に、エンドユーザー側が手数料なしでトランザクションを送信出来ます。
代わりに、スマートコントラクト・サービス提供側が運営料金を払う必要になります。
スマートコントラクト更新
イーサリアムは更新できませんが、EOSの場合、必要な権限があれば、スマートコントラクトを更新出来ます。
コンセンサスアルゴリズム
イーサリアムは、現状PoW、将来はPoSになりますが、EOS は、DPoS + 非同期 BFT になっています。
DPoS
投票によって選出された 21 個のノードが、決められた順番に従ってブロック生成・検証処理を行う
非同期 BFT
ブロックの生成と検証処理を分けて、平行で実行するようにした仕組み。
DPoS だけの場合は、選出されたノードが自分の番になった時だけ、一個前のブロックを検証します。
問題なければ、その後に続いて新しいブロックを生成する。
そうなると、1つのブロックが生成されてから、ネットワーク上の 2/3 以上(つまり 14)のブロック生成ノードに
検証してもらうことは、14 個のブロック生成時間を待たないといけない為、ブロック確定の時間が長い
EOS の場合は、それを改善したい為、検証処理を非同期にし、ブロック生成ノードがブロックを生成したら、
すぐネットワークにブロードキャストし、他のノードに検証してもらう。
他のノードが検証した結果をすぐ送信元に返事します。14 個の返事を収集できればブロックが 100% 確定になります。
現在まだ実装されていない
データ構造
イーサリアムは、トランザクションをブロックにまとめるようなシンプルな構造ですが、
EOS の場合、並列実行をサポートするため、より多い階層の構造になっています。
- ブロック
- リージョン
- ブロックを地域などによって別々のサブチェーンのように分ける(詳細の記載があんまりない)
- サイクル
- 1つのブロックを順番実行の複数サイクルに分ける
- あるアカウントから別のアカウントに送信し、後者が受け取ったアクションを処理する為に生成したアクションが次のサイクルで処理される
- こうすることで、1つのブロック時間の中、アクションの送信と返事を処理できるようになります
- シャード
- 静的な分析によりアクションが関連するアカウントを判定できる
- その上、アクションを関連しているアカウントでシャードに分ける
- 異なるシャードは、並列実行できる
- トランザクション
- アクションのまとまり
- アトミック性があり、全部成功か全部失敗だけ
- アクション
- EOS における処理の最小単位
- 送信先、アクション名、パラメータ、認証情報を含めている
データ保存領域
イーサリアムは全部チェーンデータに保存していますが、
EOS の場合は、チェーンデータ以外に、21 個のブロック生成ノードのメモリ上にデータベースを持たせる。
マルチインデックステーブルと呼ばれている仕組みになります。
公式の eosio.token スマートコントラクトの場合は、
- アカウントごとの残高データは、マルチインデックステーブルつまりメモリ上のデータベースに保持する
- 送信履歴は、ブロックチェーンデータに保持する
ように実装されています。
ユーザ識別子
イーサリアム上は、厳密に言いますとユーザという概念がありません。単なるアドレスになります。
アドレスは、プライベートキーとペアになっているパブリックキーによって算出した値になります。
EOS の場合は、アカウントという概念があり、識別子は、
- 12桁文字列
- 使える文字列は、a-z、1-5
になります。制限ありますが、一応人間が読める文字列になります。
ユーザ管理
イーサリアムは、アドレスのみ、ユーザという概念がない
EOS は、アカウントとロールベースの権限の概念があります。
アカウント作成する時、デフォルト owner
と active
ロールが作成されます。
作成時、 owner
と active
ロールに紐づくキーペアのパブリックキーを指定する必要があります。
- 1つのロールに複数のキーペアを指定し、重み係数を設定するのも出来ます
- デフォルトのロール以外に、任意のロールを設定出来ます
ユーザ作成自体が有料で EOS トークンを使う必要があります。現在は日本円 200 円程度
まとめ
DPoS コンセンサスアルゴリズムが本当に続けるかどうかはまだ疑問ありますが、
エンドユーザーに対する無料で利用できるのと、処理スピードが速いのは間違いないので、
EOS を使う価値が十分あると思います。