本稿について
Origo Scalable Privacy Preserving Platform For Decentralized ApplicationsのVersion 0.1、最終更新日: 2018/5/5時点のものを対象とします。本稿では「Chapter 5. Chain Infrastructure」のうち「5.2. Sharding」、「5.3. Virtual Machine」の日本語訳を掲載します。
原文はこちらになります。
スポンサードサーチ
5. チェーンインフラ(続き)
5.2. シャーディング
ほとんどの現在のブロックチェーンの設計では、ノードそれぞれがオンチェーンデータ全てを保存し、全トランザクションを処理している。このメカニズムは広範にわたってセキュリティを守るが、パフォーマンスを大きく犠牲にする。EthereumやBitcoinのようなブロックチェーンは毎秒数十未満のトランザクションしか処理できない。この問題に対処するため、Origoは2タイプのシャーディングメカニズムを提案した。それがコンピュテーショナルシャーディングとステートシャーディングである。
5.2.1. コンピュテーショナルシャーディング
コンピュテーショナルシャーディングとはOrigoのノードが複数のグループに分割されることを指し、各グループはトランザクションのサブセットを処理するというものである。従って、ネットワークはグループ数の増加により線形的にスケーリングすることができる。しかし、セキュアな決定論的乱数生成器がセキュリティ保証には必要不可欠である。セキュアで決定論的乱数生成器がなければシャード割り当ては差し引きできるものになってしまう(筆者注:シャード割り当てを意図的に変更することができてしまい、偏りが生じるという意味)。差し引きができるシャード割り当てはセキュリティを大きく損ない、一つのシャードに対する攻撃の困難性はネットワーク全体に攻撃するよりもはるかに下がる。セクション5.1で述べたように、私たちは予め選出されたバリデータのグループとともにBLS署名[24]を乱数生成に用いる。シャード割り当てはアイデンティティブロックに記録され、クライアントはこの情報を使って対応するシャードにトランザクションを送信する。Origoはシャーディング要件としてトランザクションの送信者アドレスを使用し、これにより同一アカウントからのトランザクションは全て同一のシャードで処理されることが保証され、クロスシャードコミュニケーションの必要性を最小化する。
5.2.2. ステートシャーディング
スケーラビリティをさらに向上させるため、Origoはステートシャーディングも採用できるように設計した。ステートシャーディングとはノードがブロックデータの一部分を保存するようにシャード化されることを指す。コンピュテーショナルシャーディングと比べてステートシャーディングにはさらに困難な課題がある。つまり、i)ステートシャーディングをセキュアなものにするのに広範な研究が必要である、ii)トランザクションは複数のシャードにまたがるステートに関連しなければならない可能性が非常に高いのでクロスシャードコミュニケーションがよく必要になるが、クロスシャードコミュニケーションは全体的なスループットを損なう可能性があるという課題である。ゆえに、最初の段階でOrigoはコンピュテーショナルシャーディングの実現を目指し、クロスシャードコミュニケーションを最小限に抑えられる実証可能でセキュアなステートシャーディングプロトコルをアクティブに研究していく。
5.3. 仮想マシン(VM)
仮想マシンはスマートコントラクトのランタイム環境で、スマートコントラクトをサポートするのに最も重要なブロックチェーンの部分である。Origo VMは新しい仮想マシン標準のWebAssenbly(WASM)を基にしている。WASMは新しくポータブルで、サイズもロード時間効率も良いフォーマットである。WASMはW3Cコミュニティグループによりオープン標準なものとして現在開発が進められている。WSAMは効率的でパフォーマンスがよいだけでなく、複数のプログラミング言語を入力としてサポートできるLLVMからのサポートもコンパイルのバックエンドとして含まれている。Origo VMに関しては、最初はc++をスマートコントラクト言語としてサポートする。長期的には、Origo VMはPythonやJavaのようなより開発者にフレンドリな言語もサポートする予定である。図5.2に(筆者注:Ethereumの)スマートコントラクトのコンパイルと実行のプロセスを示す。
Origoのプライバシー保証スマートコントラクトは、プライバーを保証してスマートコントラクトの実行を証明・検証するためにZKPに頼っており、ZKPシステムと統合したコンパイラとVMが必須である。プライバシー保証のスマートコントラクトは演算回路の中にZKPシステムで証明可能なプログラムとしてコンパイルされる必要がある。VMは演算回路を実行して証明を生成・検証する。Origoはプライバシー保証のスマートコントラクトとパブリックなスマートコントラクトの両方をサポートするので、Origo VMインスタンスは両方のスマートコントラクトを実行できるように設計される。従って上図のスマートコントラクトのコンパイルと実行の通常のパイプラインは我々の求める要件を満たさない。Origoはパブリックとプライバシー保証のスマートコントラクトの両方を受け入れることのできるパイプラインを提案する。それを図5.3に示す。
Origo VMは、EVMとZKPが回路操作を証明・検証するのをサポートする拡張OPコードをベースに構築される。さらにOrigoのプライバシー保証スマートコントラクト言語は、よりよいパフォーマンスを実現するために一定の操作について制約のある制限付きSolidityである。Origoのパブリックスマートコントラクトは制限のない完全なSolidityである点には注意されたい。EthereumからOrigoへスマートコントラクトを移動するのに最小限の努力ですむため、SolidityをOrigoのDSL(筆者注:ドメイン固有言語)として用いるつもりである。
(Origoホワイトペーパー日本語訳5 ←← 前)|(次 →→ Origoホワイトペーパー日本語訳7)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。