ホワイトペーパー

EOSテクニカルホワイトペーパー日本語訳5

更新日:

 本稿について

本稿では、EOS.IOのTechnical White Paper v2のうち「Deterministic Parallel Execution of Applications」の日本語訳を掲載します。

原文はこちらになります。

スポンサードサーチ

アプリケーションの決定性並行処理

ブロックチェーンのコンセンサスは決定論的な(再現可能な)行動に依拠しています。これは、全ての並行処理は、ミューテックスの利用やその他プリミティブのロックの利用があってはならないことを意味します。ロックをすることなく、並行処理される可能性のあるトランザクションが、非決定論的な結果を生成しないということを保証する何らかの方法がなくてはなりません。

2018年6月のEOS.IOソフトウェアのリリースではシングルスレッドを稼働させますが、将来的なマルチスレッド並行処理のためのデータ構造を包含しています。

EOS.IOソフトウェアベースのブロックチェーンでは、一度並行の手続きが有効になると、独立したシャードにアクション配信を編成するのはブロック生成者の作業となるので、結果としてそれらを並行評価できるようになります。スケジュールはブロック生成者のアウトプットで決定論的に実行されますが、スケジュールを生成するためのプロセスは決定論的である必要はありません。これは、ブロック生成者が並行処理アルゴリズムを利用してトランザクションをスケジュールできることを意味します。

並行処理の一部は、スクリプトが新しいアクションを生成すると、アクションはすぐには配信されない代わりに次のサイクルで配信されるようスケジュールされることを指します。すぐに配信できない理由は、受信者が別のシャードで自身のステートを動的に変更している可能性があるからです。

通信レイテンシの最小化

レイテンシとは、あるアカウントが別のアカウントにアクションを送信しそのレスポンスを受信するのにかかる時間です。目標は、1ブロック内でアクションとアクションの間で0.5秒待つ必要なく、2つのアカウントがアクションを相互にやりとりできるようにすることです。これを可能にするために、EOS.IOソフトウェアは各ブロックを複数のサイクルに分割します。各サイクルは複数のシャードに分割され、各シャードはトランザクションのリストを含んでいます。各トランザクションは配信されるアクションのセットを含んでいます。この構造は、交互のレイヤが順次にかつ並行に処理される木として可視化することができる。

ブロック

_領域

__サイクル(順次)

___シャード(並行)

____トランザクション(順次)

_____アクション(順次)

______受信者または通知されるアカウント(並行)

1サイクルで生成されるトランザクションを、後続の任意のサイクルやブロックで配信することができます。ブロック生成者は、最大の実測時間が経過するか配信すべき新しく生成されたトランザクションがなくなるまでブロックにサイクルを追加し続けます。

ブロックの静的解析を利用して、与えられたブロック内において同じアカウントを変更するトランザクションが2つのシャードに含まれていないかを検証することができます。その不変性が保たれている限りは、全てのシャードを並行して実行することでブロックを処理することができます。

読み取り専用アクションハンドラ

いくつかのアカウントは内部ステートを変更せずに成否判定方式でアクションを処理できる可能性があります。上記の場合、特定アカウントのための読み取り専用アクションハンドラが特定サイクル内の1つ以上のシャードに含まれている限り、これらのハンドラを実行することができます。

複数アカウントのアトミックトランザクション

時には、確実にアクションがアトミックに複数アカウントへ配信され、受け取られることを望まれることがあります。この場合は、両者のアクションは1つのトランザクション内に入れられるとともに両者のアカウントは同一のシャードを割り当てられ、アクションは順に適用されます。

ブロックチェーンステートの部分的評価

ブロックチェーンをスケールするテクノロジは構成要素がモジュラーである必要があります。とりわけアプリケーションの一部しか使う必要のない場合には、全員が全部を実行しなくてはならないようにすべきではありません。

取引所アプリケーションの開発者はユーザに取引ステートを表示することを目的としてフルノードを動作させます。この取引所アプリケーションには、ソーシャルメディアアプリケーションと関連するステートは必要ないでしょう。EOS.IOソフトウェアは、あらゆるフルノードがアプリケーションの一部を指定して実行することを可能にします。あなたのアプリケーションが別のコントラクトのステートに絶対に依存しないのであれば、他のアプリケーションに配信されるアクションは安全に無視されます。

主観的ベストエフォートスケジューリング

EOS.IOソフトウェアは、ブロック生成者が任意のアクションを任意の他のアカウントへ配信するのを義務化することはできません。各ブロック生成者は、計算複雑性とトランザクションの必要処理時間に関する独自の主観的な測定結果を作成します。これは、トランザクションがユーザによって生成されたかスマートコントラクトによって自動的に生成されたかに関係なく適用されます。

EOS.IOソフトウェアを採用してラウンチされたブロックチェーンにおいては、全てのトランザクションは、ネットワークのレベルで実行されたウェブアセンブリの命令数に基づく計算帯域幅のコストを請求されます。しかし、ソフトウェアを利用するブロック生成者はそれぞれ自身のアルゴリズムと測定結果を使用してリソース使用量を計算する可能性があります。ブロック生成者が、トランザクションやアカウントが割に合わない計算能力を消費したと判断すると、ブロックを生成する際、単純にそのトランザクションを拒否します。しかし、他のブロック生成者が有効であると考えている場合は、まだトランザクションを処理するでしょう。

一般的には、リソース使用量の限界の下で一人だけでもブロック生成者がトランザクションを有効と考えている限りは、他の全てのブロック生成者も受け入れますが、トランザクションがそのような生成者を見つけるのには最大1分程度かかるかもしれません。

ある場合には、生成者は許容範囲を超える規模のトランザクションを含むブロックを生成するかもしれません。この場合、次のブロック生成者はそのブロックを拒否することを選ぶ可能性があり、そして3番目の生成者によりつながりは破壊されます。これは、巨大なブロックがネットワークの伝播遅延を引き起こすことと何ら変わりはありません。コミュニティは攻撃のパターンに気づき、最終的には悪質な生成者から票を剥奪します。

この計算コストの主観的な評価は、実行するにあたってどれだけ時間がかかるのかを正確かつ決定論的に測定しなくてはならないということからブロックチェーンを解放します。この設計によって正確に命令をカウントする必要がなくなり、コンセンサスを破ることなく劇的に最適化の機会が増加するのです。

遅延トランザクション

EOS.IOソフトウェアは遅延トランザクションをサポートします。遅延トランザクションは、将来実行されるようスケジュールされるトランザクションです。これにより、他のシャードや切れ目なく連続トランザクションをスケジュールする長時間のプロセスを生成することへ計算を振り向けることができるようになります。

コンテクストフリーなアクション

コンテクストフリーなアクション(筆者注:Context Free Action, 固有名詞的に用いられているので念のため英語表記を記載)はトランザクションデータのみに依拠する計算に関係しますが、ブロックチェーンステートに依拠する計算には関係しません。例えば、署名検証はトランザクションに署名した公開鍵を正確に定めるためにトランザクションデータと署名のみを必要とする計算です。これはブロックチェーンが演算しなくてはならない最も高価な個別の計算の一つですが、この計算はコンテクストフリーなので並行演算することができます。

コンテクストフリーなアクションは、検証を行うためのブロックチェーンステートへのアクセスがないことを除けば、他のユーザアクションと似ています。このことは、EOS.IOが署名検証のようなコンテクストフリーなアクションを処理できるようにするだけでなく、より重要なことは、このことが汎用的な署名検証を可能にするということです。

コンテクストフリーなアクションのサポートにより、ShardingやRaiden、Plasma、State Channels等のようなスケーリング技術をいっそう並行処理可能かつ実用的なものにします。この開発により、効率的なブロックチェーン間通信や潜在的に無制限のスケーリングが可能となります。

次稿へ進む

前稿へ戻る

免責

邦訳には誤りがある場合がございます。予めご承知おき下さい。

確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。

-ホワイトペーパー
-, , , , , , , , , ,

Copyright© 暗号通貨界隈のメモ書きなど。 , 2019 All Rights Reserved Powered by STINGER.

%d人のブロガーが「いいね」をつけました。