本稿について
本稿では、The ZILLIQA Technical Whitepaper Version0.1の「VII. Smart Contract Layer」の「A Computational Sharding using Dataflow Paradigm」の日本語訳を掲載します。プログラム的な構造体や変数を主に意図して記載されている語(プログラムの自体で記述されている語)に関しては日本語ではなく英語のまま記載します。
原文はこちらになります。
スポンサードサーチ
7 スマートコントラクトレイヤ
ZILLIQAにはイノベーティブな専用のスマートコントラクト言語と実行環境が備わっており、基盤アーキテクチャを利用して大規模かつ非常に効率的なコンピュテーションプラットフォームを提供する。このセクションではデータフロープログラミング(dataflow programming)アーキテクチャを利用するスマートコントラクトレイヤ(smart contract layer)を説明する。
A. データフローパラダイムを利用したコンピュテーショナルシャーディング
ZILLIQAのスマートコントラクト言語とその実行プラットフォームは基盤ネットワークとトランザクションシャーディングアーキテクチャを利用するように設計されている。シャード化されたアーキテクチャは効率的な方法で膨大な計算を要するタスクを実行するのに適している。主なアイデアは、ネットワークのサブセット(例えばシャード)だけが計算を実行するというものである。このアプローチをコンピュテーショナルシャーディング(computational sharding)と呼ぶことにする。
既存のスマートコントラクトアーキテクチャ(例えばEthereum)とは対照的に、ZILLIQAのコンピュテーショナルシャーディングはコントラクトの処理方法に関して大きく異なるアプローチをとる。Ethereumではフルノードそれぞれが計算結果を検証してグローバルのstateを更新するために同じ計算を実行することが必要である。セキュアではあるものの、このような完全に冗長なプログラミングモデルは容易に並列処理しうる大規模な計算を実行するにはとてつもなく高コストである。事例としては検索やソート、線形代数計算のような単純なものから、ニューラルネットワークのトレーニングやデータマイニング、フィナンシャルモデリングなどといった複雑な計算が挙げられる。
ZILLIQAのコンピュテーショナルシャーディングのアプローチは、チューリング完全ではないが数多のアプリケーションにとってより良くスケールする新しいスマートコントラクト言語に依拠する。ZILLIQAのスマートコントラクト言語はデータフロープログラミングスタイル[16],[17]に準拠する。データフロー実行モデルでは、コントラクトは有向グラフで表現される。有向グラフ中のノードはプリミティブな命令または操作である。2ノード間の有向辺は操作間のデータの依存関係、すなわち1番目のアウトプットと2番目へのインプットを表現している。ノードは自身の全てのインプットが利用可能になるとすぐにアクティベートされた(または操作可能な)状態になる。これは(Ethereumで利用されているような)古典的なフォンノイマン型の実行モデルとは対照的である。フォンノイマン型では、命令は早めに実行できるかどうかに関わらず、プログラムカウンタが命令に到達したときに限り実行される。
データフローアプローチを利用する主なアドバンテージは、1度に1つより多くの命令を実行できることである。従って有向グラフ中のいくつかのノードは同時にアクティベートされた状態になり、並列に実行できる。この単純な原理が極めて多くの並列処理実行の可能性をもたらす。このことを確認するため、3つの命令を持つ単純な逐次プログラム図1aで示し、そのデータフローによる変形版を図1bに示す。フォンノイマン型実行モデルでは、このぷグラムは3つの時間単位で実行される。まずAを計算し、次にBを計算し、最後にCを計算する。このモデルは、AとBが独立に計算可能であるという事実を捉えていない。一方でデータフロープログラムはこれらの2つの値を並列に計算できる。加算を行うノードはAとBが利用可能になるとすぐにアクティベートされた状態になる。
ZILLIQAのシャード化されたネットワークで実行する場合、データフロープログラム中の各ノードは最終的に単一のシャードまたはシャード内の小規模なノードのサブセットに帰すことができる。このため、あるノードはMapタスクを実行する一方で別のノードがReduce処理者として各Mapタスク実行者が行った仕事を集約するあらゆるMapReduceスタイルの計算タスクにとってこのアーキテクチャは理想的である。
データフロープログラムの実行を促すためにZILLIQAのスマートコントラクト言語は下記の機能を備えている。
- ブロックチェーン全体でグローバルに共有される仮想メモリ空間上で操作を行うこと
- 実行期間中、共有仮想メモリ空間の中間セルをロックすること
- ブロックチェーンへのコミットの実行期間中、中間結果のチェックポイントをとること。
(ZILLIQAホワイトペーパー日本語訳7 ←← 前)|(次 →→ ZILLIQAホワイトペーパー日本語訳9)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。