仮想通貨

ICPのロードマップを読み解こう-16

仮想通貨

ノンホルダー・リトです。

ICPを読み解こうの会も16回目です。

しかし、まだ先は長いです。

ゆっくりじっくり読んでいきましょー。

原文はこちらです。

Announcing Internet Computer “Mainnet” and a 20-Year Roadmap
The Internet Computer is the world’s first blockchain that runs at web speed and can increase its capacity without bound.

Making WebAssembly the World’s Virtual Machine

見出しの翻訳です。

WebAssemblyを世界の仮想マシンにする

本文の翻訳と要点を見ていきまっしょい。

遠い昔、高レベルのコンピュータプログラミング言語は、
主に、オペレーティングシステムの監督下で
コンピュータのハードウェア上で直接実行できる
低レベルの機械語命令の形で
ソフトウェアにコンパイルされていました。

例えば、Cで書かれたプログラムは、
インテル社が独自に設計し、
その後他のコンピュータプロセッサメーカーが採用した
X86アセンブリ命令にコンパイルされ、
市場で主流のX86ファミリーのシリコン上で
直接実行できるようになります。

しかし、低レベルの機械語命令形式のソフトウェアには、
サンドボックス化(安全性の確保)が困難であること、
特定のハードウェアアーキテクチャを持つ
コンピュータ上で実行しなければならないこと、
想定されるOS上でのみ動作する形式で
配置しなければならないことなど、
さまざまな欠点がある。

Cのようなコンパイル言語で書かれたソフトウェアには
多くの欠点があるわけですね。

  • サンドボックス化(安全性の確保)が難しい
  • ハードの互換性に欠ける
  • OSへの互換性に欠ける

これらの問題を解決するために、
インタープリタ型言語が導入され、
ハイレベルなコードをコンパイルせずに
配布できるようになりましたが、
これには「パフォーマンスが低い」という問題がありました。

そこで、ソフトウェアのコンパイル対象を
プロセス仮想マシン」とし、
ソフトウェアで実装された仮想的な
コンピュータ・アーキテクチャとする方法が考えられました。

例えば、Java言語は、
低レベルのバイトコードにコンパイルされ、
Java Virtual Machine(JVM)の実装上で実行することができます。

高度に最適化された仮想マシンは、
オペレーティングシステムとコンピュータハードウェアの
あらゆる組み合わせに対応して開発することができ、
JVMはバイトコードを実行できる
安全なサンドボックスを提供するため、
Javaで書かれたソフトウェアは
どこでも効率的かつ安全に実行できるようになりました。

仮想マシン上でコンパイルすることで、
互換性に富むインタープリタ型言語が登場したわけです。

JVMは、Oracle Corporationに買収された
Sun Microsystemsが開発したもので、
著作権・特許問題で泥沼化しています。

一方で、RustC++のような
人気のある効率的な言語が使用していない
ガベージコレクションを使用する
プログラミング言語でのアプリケーションにのみ
適しているように設計されていました。

さらに、その複雑さと固有の非決定性により、
ブロックチェーン上で
スマートコントラクトコードを
実行するのには適していません。こ

のような理由から、Ethereumプロジェクトは、
Solidityなどの高レベル言語からコンパイルダウンされる
低レベルのスマートコントラクトバイトコードを実行するために、
ブロックチェーン用の仮想マシンを必要としたとき、
独自のEthereum Virtual Machine (EVM)を
構築することを選択しました。

これには果敢な研究開発が行われましたが、
複雑で強力なソフトウェアの実行をサポートする
安全性と効率性の高い仮想マシンを開発することは、
非常に大きな技術的課題であり、
継続的な努力が必要です。

そのため、イーサリアムのスマートコントラクトで
できることが大幅に制限されてしまいました。

しかし、2014年にEthereumが設計・構築されたときには、
他の選択肢はほとんどありませんでした。

JVMはブロックチェーンに応用できなかった。

だから、Ethereumでは、
EVMとSolidityを新たに構築する必要があったわけです。

2017年3月、WebAssemblyと呼ばれる
新しい低レベルの命令フォーマットのMVP仕様が提案され、
誰でも仮想マシンの実装を作ることができるようになりました。

この新しいフォーマットは多くの利点をもたらした。

とりわけ、
多様な高級プログラミング言語をサポートできること、
バイトコードがコンパクトでネイティブマシンの命令と
同等の速度で容易に実行できること、
そして、形式ソフトウェア検証などの
高度な機能のための強力なプラットフォームを
意図的に提供していることなどである。

このフォーマットはすぐに
W3C Community Groupと
W3C Working Groupによって開発された
重要なオープンスタンダードとなり、
このプロジェクトは現在多くの支持者を得ている

重要なことに、WebAssemblyコードのサポートは現在、
すべての主要なWebブラウザエンジンでサポートされており、
何十億人もの人々のWeb体験に一役買うことができます。

これにより、「世界のための」仮想マシンを
開発するために必要な莫大なリソースが集まり、
大規模なテストの恩恵を受けることができるようになったのです。

WebAssemblyの開発は、
クライアントアプリケーションだけでなく、
バックエンドのサーバーアプリケーションや、
最も重要なブロックチェーンにも適していることを示しています。

基本的に、WebAssemblyは
インターネットの仮想マシン形式になる可能性が高いと思われます。

いろんな言語に対応できて、
使いやすい仮想マシン、
それがWebAssemblyです。

そして、WebAssemblyは、
ブロックチェーンプロジェクトには、
なくてはならない存在になっています。

インターネットコンピュータプロジェクトは、
初期のチームメンバーであるティモ・ハンケが、
MVP規格が発表された直後に、
WebAssemblyの共同設計者である
Andreas RossbergをDFINITY財団に紹介し、
Andreasが主席研究員兼エンジニアになったことが幸いした。

これにより、WebAssemblyは
プロジェクトの初期段階から
インターネットコンピュータで使用される
低レベルの仮想マシンフォーマットとなることが保証された。

インターネットコンピュータは、
現在の標準規格と今後の進化を
最大限に活用できるように設計されています。

インターネットコンピュータの
canisterフレームワークは
WebAssemblyのバイトコードを実行するため、
スマートコントラクトはほとんどすべての
プログラミング言語で作成できる可能性があります。

現在、DFINITY財団が開発しているcanister SDKでは、
Rust言語と、Andreas氏が中心となって
言語部門が開発した新言語であるMotokoを使った
スマートコントラクトの開発をサポートしています。
(他のいくつかの言語のサポートも開発中です)。

DIFINITYのWebAssemblyであるcanister SDKでは、
RustとMotokoが対応しています。

Motokoいい名前ですよねぇ。

攻殻機動隊好きにはたまらんネーミングです。

Motokoはモダンで使いやすい言語で、
JavaScriptを知っている人なら誰でもすぐに習得できます。

また、パワフルで表現力豊かな言語であり、
直交型永続化などの
インターネットコンピュータの新しい環境機能と、
WebAssembly自体の多くの側面の両方の価値を
最大化するように設計されています。

インターネットコンピュータは、
WebAssemblyをフロントエンドだけでなく
バックエンドの仮想マシンとして定着させ、
バックエンドをWebに接続する
安全でスケーラブルかつ効率的で強力な
スマートコントラクトを実行する
ブロックチェーンとして再構築することを目指しています。

ICPのWebAssemblyでは、
バックエンドにまで対応することで、
徹頭徹尾、一つの仮想マシンでつなぎ、
ブロックチェーンを構築するようにしています。

なんということでしょう。

Motokoに触らなければ。

この新しい技術に触れたい。

免責事項

本記事を参考にした事によるいかなる不利益について、管理者は一切の責任を負いかねます。

DYOR, NFA

コメント

タイトルとURLをコピーしました