Foresight Ventures: WASM - 新時代のエンジン

初級編1/1/2024, 2:25:51 AM
この記事では、Wasmとブロックチェーンの関係とユースケース(スマートコントラクト、クロスチェーンインタラクション、オフチェーン計算、データプライバシー)について検証します。

TLの;博士

WebAssembly (Wasm) は、Web ブラウザーで実行できるポータブルで高性能なバイナリ命令形式です。 これは、複数のプログラミング言語で使用でき、さまざまなプラットフォームで実行できるユニバーサル コンパイル ターゲットとして設計されています。

ブロックチェーンは、暗号化とコンセンサスアルゴリズムを使用してデータのセキュリティと信頼性を保証する分散型台帳技術です。 ブロックチェーンは、トランザクションの記録、データの保存、スマートコントラクトの実行などのアプリケーションに使用できます。

Wasmとブロックチェーンの間には、いくつかの関係とアプリケーションシナリオがあります。

  1. スマートコントラクト:Wasmはスマートコントラクトの実行環境として機能し、さまざまなブロックチェーンプラットフォーム上でコントラクトを実行できるようにします。 Wasmの高いパフォーマンスとポータビリティにより、スマートコントラクトのより効率的な実行とクロスプラットフォームのユーザビリティが可能になります。
  2. クロスチェーンの相互運用性: Wasm を使用して、クロスチェーンの相互運用性を実装できます。 異なるブロックチェーンのロジックをWasmコードにコンパイルすることで、同じロジックを異なるブロックチェーン上で実行することができ、チェーン間でのデータ転送と相互作用が可能になります。
  3. オフチェーン計算:Wasmはブロックチェーン外での計算に使用でき、計算結果をブロックチェーンに提出できます。 これにより、データのセキュリティと信頼性を維持しながら、計算の効率と柔軟性が向上します。
  4. データプライバシー:Wasmは、ブロックチェーン上でデータプライバシー保護を実現するために使用できます。 センシティブデータの処理ロジックをWasmコードにコンパイルし、ブロックチェーン上で実行することで、計算の検証可能性を確保しながら、データのプライバシーを守ることができます。

要約すると、Wasmとブロックチェーンの組み合わせは、より効率的で安全、かつ柔軟なブロックチェーンアプリケーションとサービスを提供します。 Wasmの移植性と高性能により、ブロックチェーンの分野で重要な技術となっています。

1. Web Assembly とは

WebAssembly は、World Wide Web Consortium (W3C) によって開発された効率的で軽量な命令セット標準です。 これは、Webおよびハイパフォーマンスコンピューティングのディスラプターとして歓迎されており、クロスブラウザ実行をサポートします。 これは、C/C++、Go、Rust などのさまざまなプログラミング言語を統一された標準バイナリ形式にコンパイルし、JavaScript の代替として使用して、Web ブラウザーでネイティブに近いコード効率で実行できることを意味します。

WebAssembly は WASM とも呼ばれ、メモリセーフでプラットフォームに依存しないテクノロジーであり、さまざまな CPU アーキテクチャに効率的にマッピングできます。 これには、いくつかの重要な利点があります。

  • 効率性: WASM には言語機能の完全なセットがあり、コンパクトで読み込みの速いバイナリ形式です。 その目標は、ハードウェア機能をフルに活用して、ネイティブ言語のパフォーマンスを実現することです。
  • セキュリティ: WASM は、メモリ セーフでサンドボックス化された実行環境で実行され、既存の JavaScript 仮想マシン内に実装することもできます。 Web 環境では、WASM は同一生成元ポリシーとブラウザーのセキュリティポリシーに厳密に準拠します。 コンパイル時に、WASM はセキュリティー・リスクを軽減するためにインターフェースを制限します。 ほとんどのWASMアプリケーションはインターネットにアクセスできず(ソケットサポートがないなど)、ローカルデータベースへのアクセスに制限されています。 多くのセキュリティー問題は、無許可のメモリー・アクセスから発生しますが、これは WASM でのコンパイル時に軽減できます。
  • 互換性: WASM は、バージョンレスで、機能テストが可能で、Web での下位互換性があるように設計されています。 JavaScript によって呼び出され、JavaScript コンテキストに入り、Web API などのブラウザー機能にアクセスできます。 WASMはWebブラウザだけでなく、Node.jsなどの非Web環境でも実行できます。 Deno、およびIoTデバイス。 複数のコンパイルを必要とする従来のアプローチとは異なり、WASMは一度コンパイルするだけで、プラグアンドプレイで即座に実行できます。

さらに、Web は、あらゆるデバイスからアプリケーションにアクセスできる唯一の真のユニバーサル プラットフォームです。 これにより、単一のコードベースを維持し、更新を簡素化し、すべてのユーザーがアプリケーションにアクセスできるようにすることもできます。 WASM は、CPU 命令に直接対応する 64 ビットおよび 32 ビット整数演算をサポートします。 浮動小数点演算をなくすことで、コンセンサスアルゴリズムに必要な決定論的な振る舞いを簡単に実現できます。 WASMはLLVMコンパイラインフラストラクチャプロジェクトによってサポートされており、LLVMにおける10年以上にわたるコンパイラ最適化の恩恵を受けることができます。 WASMは、Google、Apple、Microsoft、Mozilla、Facebookなどの大手企業によって継続的に開発されており、これらの企業が開発したブラウザのバックエンドによってサポートされています。

WASMの優れた点は、バイナリ形式であるため、ダウンロードやインストールを必要とせずにどこでも実行できることです。 ワンクリックで、必要なときにすぐにWebアプリケーションを実行できます。 ブラウザには、実行されたコードがシステムに害を及ぼすのを防ぐセキュリティメカニズムが組み込まれているため、バイナリファイルを直接ダウンロードして実行するよりもさらに安全です。 さらに、Webアプリケーションの共有は簡単で、リンクはクリック可能な文字列としてどこにでも配置できます。

2. なぜWebアセンブリが必要なのですか?

2.1 Web2の

Web は、静的コンテンツと小さなスクリプト言語のプラットフォームから、ブラウザーの組み込み機能と Web が提供する対話機能のおかげで、すばらしいアプリケーションや機能を備えた強力で人気のあるプラットフォームに進化しました。 しかし、Web アプリケーションは依然として、当初はこれらのタスクを実行するように設計されていなかった同じスクリプト言語 (JavaScript) によって駆動されます。

JavaScript は当初、Web アプリケーションの軽量ハイパーテキスト文書に対話性を持たせることを目的とした単純なスクリプト言語でした。 そのデザインは習得と書き込みが簡単で、実行速度を優先していませんでした。 何年にもわたって、ブラウザによるJavaScript解析のパフォーマンスが大幅に向上し、パフォーマンスが大幅に向上しました。

JavaScriptの実行速度が加速したことで、ブラウザ内でできることの幅が格段に広がりました。 新しいAPIには、インタラクティブなグラフィックス、ビデオストリーミング、オフラインブラウジングなどの機能が導入されています。 さらに、以前はデスクトップ環境に限定されていたアプリケーションがWebに参入するケースも増えています。 これで、ブラウザでドキュメントを簡単に編集したり、メールを送信したりできます。 ただし、特定のドメインでは、JavaScript のパフォーマンスが依然として課題となっています。 ブラウザ以外に使用するソフトウェアアプリケーション(ゲーム、ビデオ編集、3Dレンダリング、音楽制作など)について考えてみてください。 これらのアプリケーションには、広範な計算と高いパフォーマンスが必要です。 JavaScript は、これらの高パフォーマンス要件を満たすのに苦労しています。

しかし、JavaScriptを置き換えることは現実的ではなく、インターネット全体がJavaScriptに依存しているため、その目標を達成するには数十年かかるかもしれません。 さらに、JavaScriptを絶えず改善している大規模なコミュニティがあります。 実際、他の言語と比較すると、JavaScript には null や == などの点でいくつかの欠点があります。 ただし、これらの問題は、テクノロジ全体を置き換えることを正当化するほど深刻ではありません。

したがって、WebAssembly が JavaScript に取って代わることはありませんが、だからといって WASM が将来使用されないわけではありません。 実際、WASMの使用はますます広まるでしょう。 これは、WASMが画像処理やゲームなどの強力な計算機能をWebにもたらすことができるためです。 WASM を使用すると、適切に動作する Photoshop の Web ベース バージョンや、ブラウザーで毎秒 60 フレームまたはそれ以上のフレームレートで動作する 3D ゲームを作成できます。 特にゲームでは、音声処理と映像処理の同時実行や、物理効果とAIの連携が課題となっています。 WASMには、ブラウザでゲームを効率的に実行する機能があり、他の多くのアプリケーションをブラウザに導入するための扉を開きます。

上の図は、JavaScript と WebAssembly (wasm) のワークフローの比較を示しています。 wasm は JavaScript に比べてはるかに簡潔であることがわかります。

2.2 Web3の

WASM 仮想マシン

2018年、イーサリアムのエコシステムは、EVMよりもパフォーマンスが優れていると考えられていたため、WASM VMをスマートコントラクト仮想マシンとして使用することについて議論し始めました。 EVMの発明者であるGavin Wood氏は、EVMをWASMに置き換える可能性を表明しており、Vitalik氏は、より多くの開発ニーズを満たすために、Ethereum 2.0をWASMコントラクト(eWASM)をサポートするようにアップグレードすると述べています。 今日、WASM契約の開発はすでに具体化しています。

2.3 評価基板 (EVM) の設計方法 なぜ非効率なのですか?

アーキテクチャのサイズの問題

従来のコンピュータには、32ビットまたは64ビットの入力を受け入れる命令セットがあります。 しかし、EVMは、イーサリアムのハッシュアルゴリズムをより簡単に処理できるように設計された256ビットコンピュータであり、明示的な256ビット出力を生成するという点で、他とは一線を画し、ユニークです。

しかし、EVMプログラムを実行する実際のコンピュータは、スマートコントラクトを実行するために256ビットワードをネイティブアーキテクチャに分割する必要があるため、システム全体が非効率的で実用的ではありません。

さらに、イーサリアム上でEVMの基本的なオペコードを使用してSHA256のような複雑なアルゴリズムを実装したい場合は、大変なことになります。 命令セットを介して複雑なプログラムを実行するという高いガスコストの問題に対処するために、イーサリアムはプログラムをEVMにコンパイルし、一定量のガスを消費するプリコンパイルの概念を導入しました。 注目すべきプリコンパイルはイーサリアムのハッシュアルゴリズムで、仮想マシン内に実装すると、コントラクトが呼び出されたときに非常に高額な料金が発生するためです。

肥大化したプリコンパイル

プリコンパイルの問題は、仮想マシンの肥大化と複雑さが継続的に増大し、核心的な問題である現在の命令セットと仕様の非効率的で貧弱な設計に対処できないことです。

これらの複雑なプログラムのプリコンパイルを必要とせず、代わりに基本的な命令を通じて目的の結果を効率的に達成する新しい仕様と命令セットを定義できるとしたらどうでしょうか。 ここでWASMの出番です。

2.4 EVMとWASM VMの比較

  • スピード:WASMは、EVMと比較してより高速な実行速度を提供することを目的としています。 EVMはスマートコントラクトのコンパイルと実行に効率の問題があるかもしれませんが、WASMはコンパイルされたコードに直接変換することで読み込み速度と処理能力を向上させます。
  • プリコンパイル済みコントラクト:EVMは、暗号計算を効率的に実行するためにプリコンパイル済みコントラクトに依存していますが、これはハードフォークのリスクをもたらす可能性があります。 WASMは、プリコンパイルされたコントラクトの必要性を排除し、開発者が効率的かつ高速なスマートコントラクトを作成できるようにします。
  • トランザクションコスト:WASM仮想マシンの高速化により、トランザクションのスループットが大幅に向上し、契約の展開とトランザクションのコストが削減されます。 WASMコントラクトは、イーサリアムネットワークにおける高い取引手数料と混雑の問題に対処します。
  • 柔軟性と相互運用性:WASMは、スマートコントラクト開発に利用できる言語の範囲を拡張し、Rust、C++、JavaScriptなど、WASMにコンパイルされるあらゆる高水準言語の使用をサポートします。 つまり、開発者はインクのような成熟したフレームワークを含む、好みの言語でスマートコントラクトを書くことができます。Rust または Ask!AssemblyScript の場合。

EWASMチームは現在、イーサリアムにWebAssemblyを統合して、より効率的で簡素化された実行レイヤーを確保し、イーサリアムを完全に分散型コンピューティングプラットフォームとして適したものにしています。 WASMは、DfinityやEOSなど、他の多くのプロジェクトで標準として採用されており、どちらも実行レイヤーを強化するために使用しています。

2.5 スタイラス(アービトラム)

Stylusプロジェクトは、Arbitrum Ethereumレイヤー2ネットワーク上のイニシアチブであり、WebAssembly(WASM)仮想マシンを導入することでスマートコントラクトの実行パフォーマンスを向上させることを目的としています。 契約はSolidityよりも迅速に実行でき、ガス代も削減できます。 これにより、Arbitrumネットワーク上で高性能なスマートコントラクトを簡単に構築でき、現在、C、C++、Rustでのコンパイルをサポートしています。

カスタムプリコンパイルのサポート: Stylusはカスタムプリコンパイルもサポートしており、開発者は独自のRustまたはC++プリコンパイルをArbitrumネットワークにデプロイできます。 これにより、オンチェーンのアップグレードを待たずに、新しい暗号化アルゴリズムやその他の特定の機能をオンチェーンで導入することができます。 例えば、テンソル計算をプリコンパイルして推論コストを削減することができ、オンチェーンの機械学習に有益です。

EVMとの相互運用性:Stylusは、イーサリアム仮想マシン(EVM)との相互運用性を通じて、既存のイーサリアムエコシステムとの統合を実現します。 つまり、Stylus コントラクトは既存の EVM コントラクトと対話し、EVM と同じグローバル状態を共有できます。

再入性: Cosmos Wasm とは異なり、Stylus Rust SDK には再入機能が導入されており、開発者は手動で有効にすることができます。 これにより、コントラクトの相互運用性に対する柔軟性が高まりますが、開発者はセキュリティを確保するために状態を慎重に管理する必要があります。

Arbitrumの活発なエコシステムに基づいて、Stylusの統合はおそらく最も意味のあるWASM統合です。 また、zkRollupフィールド間でのArbitrumの競争力も強化します。

2.6 ギア(ポルカドット)

Gearプロトコルは、スマートコントラクトをホストするためのツールとして機能するPolkadotパラチェーンとして展開できる技術を作成しています。 Polkadotと同様に、GearもSubstrateフレームワークを利用しており、特定のアプリケーション向けにさまざまなブロックチェーンを作成するプロセスを簡素化します。 Substrateは、すぐに使える機能を備えているため、ユーザーはプロトコル上にカスタムエンジンを作成することに集中できます。

以前は、ブロックチェーンを立ち上げるコストは高かったが、Gearを使用すると、dApp開発者はブロックチェーン全体をゼロから構築して運用するのではなく、プロジェクトに集中することができます。

Gearプロトコルのメインエンジンは、スマートコントラクトモジュールです。 Gearの場合、スマートコントラクトは、Rust、C、C++などのさまざまな言語でコンパイルされたWebAssemblyプログラムです。 仮想通貨の世界以外の開発者にとっては、使い慣れた環境でスマートコントラクトを構築できるため、参入障壁は低くなります。 開発者は、スマートコントラクトプログラミング言語を試す方が簡単だと感じています。

Gearのスマートコントラクトアーキテクチャは、内部でアクターモデルを利用し、以下の機能を提供します。

  • 不変プログラム用の永続メモリ
  • 非同期メッセージ処理
  • ブロックチェーンのコンテキストのための最小限で直感的で十分なAPIサーフェス
  • オンチェーンコンポーネント間のアクター通信プロキシモデルにより、コンポーザビリティを高め、並列コード実行およびシャーディングとの互換性を向上させます。

各プログラムには固定量のメモリがあり、Gearはそれを制御できます。 プログラムは、自身のメモリ内でのみ読み取りと書き込みを行うことができ、他のプログラムのメモリ空間にアクセスすることはできません。 各プログラムには独自の独立したメモリ空間があり、Gearノードの情報を並列に処理できます。

2.7 コスモスワズム(コスモス)

CosmWasm は、Cosmos-SDK と簡単に統合できる、モダンで強力な Wasm ベースのスマート コントラクト プラットフォームです。 これは、CosmWasmの主な利点の1つであるCosmWasmの主な利点の1つを示しています:CosmWasmで書かれたコントラクトは、IBC(Inter-Blockchain Communication)とネイティブに緊密に統合されており、開発者とユーザーはマルチチェーンの未来に入ることができます。 現在、Rust のみがサポートされています。

CosmWasmの利点

  1. セキュリティ:Rustプログラミング言語を使用してスマートコントラクトのセキュリティを強化します
  2. クロスチェーン互換性:Cosmosエコシステム内のIBC(Inter-Blockchain Communication)プロトコルをサポートします。
  3. パフォーマンス:従来のイーサリアム仮想マシン(EVM)と比較して、特定のケースでより高い効率と低いトランザクションコストを示します。
  4. 開発者に優しい: Rust 言語の型とメモリの安全性機能は、スマートコントラクトの特定の種類のエラーを減らすのに役立ちます。

課題と制限

  1. 学習曲線:Rustは、Solidityのようなより一般的に使用されているスマートコントラクト言語と比較して、学習曲線が急勾配である可能性があります。 広く採用される可能性を高めるために、CosmWasm はより多くの言語でのコンパイルをサポートする必要があります。
  2. エコシステムとツール:CosmWasmの開発ツールとエコシステムは、成長しているものの、イーサリアムのような成熟したスマートコントラクトプラットフォームと比較して、まだ比較的限られている可能性があります。
  3. 市場シェアと認知度:スマートコントラクトプラットフォームの分野では、CosmWasmはEthereumやBinance Smart Chainなどのプラットフォームと比較して認知度が低い可能性があり、開発者やユーザーを引き付ける能力に影響を与えます。
  4. メンテナンスとアップグレードの課題:CosmWasmはコントラクトのアップグレード機能を提供しますが、スマートコントラクトのアップグレードの維持と管理は依然として複雑なタスクであり、セキュリティの脆弱性を回避するために慎重に処理する必要があります。
  5. 互換性の問題:EVMやその他のスマートコントラクト環境に慣れているプロジェクトは、CosmWasmに移行する際に互換性の問題に直面する可能性があります。

2.8 ZK-WASMの

wasm 仮想マシンに加えて、ZKWASM と呼ばれる最近の新しいテクノロジもあります。 発明者であるDelphinus Labsは、GitHubでZK-WASMのコードをオープンソース化しました。 ZKWASMを使用すると、開発者は実行された計算を再実行せずに正確性を検証できます。 ZKWASMを活用することで、開発者はさまざまなプログラミング言語を使用してゼロ知識証明(ZKP)アプリケーションを柔軟に構築できます。 これらのアプリケーションは、Webブラウザでシームレスに実行できます。

ZKWASMは、SNARGとゼロ知識証明を組み合わせたZKSNARKから派生しています。 さらに説明しましょう。 通常、ZKSNARKを使用するには、算術回路言語またはPinocchio、TinyRAM、Buffet/Pequin、Geppetto、xJsnarkフレームワーク、ZoKratesなどの回路に適した言語でプログラムを作成する必要があります。 これは既存のプログラムにとって障壁となり、ZKSNARKの力を活用することを困難にしています。 ただし、ソースコードレベルではなく、仮想マシンのバイトコードレベルでZKSNARKを使用し、ZKSNARKをサポートする仮想マシンを実装するという別の方法があります。 Delphinus Labsは、WASM仮想マシン全体をZKSNARK回線に組み込むことで、後者のアプローチを採用しました。 その結果、既存のWASMアプリケーションは、変更することなくZKWASM上で直接実行できます。 したがって、クラウドサービスプロバイダーは、計算結果が正直に計算され、個人情報を開示しないことをすべてのユーザーに証明できます。

ZKWASMは、ブラウザで実行される操作のオンチェーン検証を可能にするなど、さまざまなユースケースを提供します。 これにより、ブロックチェーン上で検証可能なWebベースのインタラクションが可能になります。 その他のユースケースには、オラクルサービス、オフチェーン計算、自動化、Web2とWeb3の間のギャップを埋める、機械学習とデータ処理の証明の生成、さらにはゲームやソーシャルアプリケーションなどがあります。 zkWASMは、Web3の可能性を広げ、Web2開発者をこの変革的な状況に統合します。

Delphinus LabのZKWASMの実装により、開発者はゼロ知識証明の力を利用してアプリケーションのセキュリティとプライバシーを強化し、より信頼性の高い分散型デジタルエコシステムへの道を開くことができます。

3. おわりに

Webのパフォーマンスとスマートコントラクトプラットフォーム実行レイヤーの将来は有望です。 dAppsはパフォーマンスが向上するだけでなく、WASMを統合することで、RustやGoなどの主流言語に精通している人は、Solidityやその他のブロックチェーン開発言語の複雑さを学ぶことなく、スマートコントラクトを簡単に開発できるようになります。 Evans Data Corporation によると、世界には約 2,700 万人の開発者がおり、この数は着実に増加しており、2024 年までに 2,870 万人以上に増加すると予想されています。 しかし、ブロックチェーン分野の開発者数はまだ3万人に満たず、開発者全体の約1000分の1に過ぎません。 この数は着実に増加していますが、新しいスマートコントラクト言語を学ぶことは、開発者がブロックチェーン業界に参入する上で依然として障壁となる可能性があります。

しかし、ますます多くのブロックチェーンが、コンパイルされたスマートコントラクトのバイトコードとしてWeb Assemblyをサポートし始めています。 WASMは、効率性、相互運用性、および幅広いユースケースをブロックチェーンにもたらします。 また、開発者の扉を開く鍵としても機能し、ブロックチェーン開発への参入障壁を下げます。 近い将来、Web 2.0の開発者がブロックチェーン開発に挑戦したいと思ったとき、Python、C++、JavaScriptなどの使い慣れた言語を使用してブロックチェーン上に大規模なアプリケーションを構築し、分散型ネットワークの価値を最大化できることを想像してみてください。 まずはクリエイター(開発者)のハードルを下げ、次にユーザーのハードルを下げて、マスアダプションへと向かう。

4. 目次

https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21

https://wiki.polkadot.network/docs/learn-wasm

https://docs.arbitrum.io/stylus/stylus-gentle-introduction

https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c

https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8

https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf

https://github.com/DelphinusLab/zkWasm

この記事に関するアドバイスとガイダンスを提供してくれた Maggie と Xinyou Ji (CMU) に感謝します。

免責事項:Foresight Venturesのすべての記事は、投資アドバイスを意図したものではありません。 投資にはリスクが伴いますので、ご自身のリスク許容度を見極め、慎重に投資判断を行ってください。

免責事項:

  1. この記事は[Foresight Research]からの転載です。 すべての著作権は原著作者[Mike@ Foresight Ventures]に帰属します。 この転載に異議がある場合は、 Gate Learn チームに連絡していただければ、迅速に対応いたします。
  2. 免責事項:この記事で表明された見解や意見は、著者のものであり、投資アドバイスを構成するものではありません。
  3. 記事の他言語への翻訳は、Gate Learnチームによって行われます。 特に明記されていない限り、翻訳された記事を複製、配布、盗用することは禁止されています。

Foresight Ventures: WASM - 新時代のエンジン

初級編1/1/2024, 2:25:51 AM
この記事では、Wasmとブロックチェーンの関係とユースケース(スマートコントラクト、クロスチェーンインタラクション、オフチェーン計算、データプライバシー)について検証します。

TLの;博士

WebAssembly (Wasm) は、Web ブラウザーで実行できるポータブルで高性能なバイナリ命令形式です。 これは、複数のプログラミング言語で使用でき、さまざまなプラットフォームで実行できるユニバーサル コンパイル ターゲットとして設計されています。

ブロックチェーンは、暗号化とコンセンサスアルゴリズムを使用してデータのセキュリティと信頼性を保証する分散型台帳技術です。 ブロックチェーンは、トランザクションの記録、データの保存、スマートコントラクトの実行などのアプリケーションに使用できます。

Wasmとブロックチェーンの間には、いくつかの関係とアプリケーションシナリオがあります。

  1. スマートコントラクト:Wasmはスマートコントラクトの実行環境として機能し、さまざまなブロックチェーンプラットフォーム上でコントラクトを実行できるようにします。 Wasmの高いパフォーマンスとポータビリティにより、スマートコントラクトのより効率的な実行とクロスプラットフォームのユーザビリティが可能になります。
  2. クロスチェーンの相互運用性: Wasm を使用して、クロスチェーンの相互運用性を実装できます。 異なるブロックチェーンのロジックをWasmコードにコンパイルすることで、同じロジックを異なるブロックチェーン上で実行することができ、チェーン間でのデータ転送と相互作用が可能になります。
  3. オフチェーン計算:Wasmはブロックチェーン外での計算に使用でき、計算結果をブロックチェーンに提出できます。 これにより、データのセキュリティと信頼性を維持しながら、計算の効率と柔軟性が向上します。
  4. データプライバシー:Wasmは、ブロックチェーン上でデータプライバシー保護を実現するために使用できます。 センシティブデータの処理ロジックをWasmコードにコンパイルし、ブロックチェーン上で実行することで、計算の検証可能性を確保しながら、データのプライバシーを守ることができます。

要約すると、Wasmとブロックチェーンの組み合わせは、より効率的で安全、かつ柔軟なブロックチェーンアプリケーションとサービスを提供します。 Wasmの移植性と高性能により、ブロックチェーンの分野で重要な技術となっています。

1. Web Assembly とは

WebAssembly は、World Wide Web Consortium (W3C) によって開発された効率的で軽量な命令セット標準です。 これは、Webおよびハイパフォーマンスコンピューティングのディスラプターとして歓迎されており、クロスブラウザ実行をサポートします。 これは、C/C++、Go、Rust などのさまざまなプログラミング言語を統一された標準バイナリ形式にコンパイルし、JavaScript の代替として使用して、Web ブラウザーでネイティブに近いコード効率で実行できることを意味します。

WebAssembly は WASM とも呼ばれ、メモリセーフでプラットフォームに依存しないテクノロジーであり、さまざまな CPU アーキテクチャに効率的にマッピングできます。 これには、いくつかの重要な利点があります。

  • 効率性: WASM には言語機能の完全なセットがあり、コンパクトで読み込みの速いバイナリ形式です。 その目標は、ハードウェア機能をフルに活用して、ネイティブ言語のパフォーマンスを実現することです。
  • セキュリティ: WASM は、メモリ セーフでサンドボックス化された実行環境で実行され、既存の JavaScript 仮想マシン内に実装することもできます。 Web 環境では、WASM は同一生成元ポリシーとブラウザーのセキュリティポリシーに厳密に準拠します。 コンパイル時に、WASM はセキュリティー・リスクを軽減するためにインターフェースを制限します。 ほとんどのWASMアプリケーションはインターネットにアクセスできず(ソケットサポートがないなど)、ローカルデータベースへのアクセスに制限されています。 多くのセキュリティー問題は、無許可のメモリー・アクセスから発生しますが、これは WASM でのコンパイル時に軽減できます。
  • 互換性: WASM は、バージョンレスで、機能テストが可能で、Web での下位互換性があるように設計されています。 JavaScript によって呼び出され、JavaScript コンテキストに入り、Web API などのブラウザー機能にアクセスできます。 WASMはWebブラウザだけでなく、Node.jsなどの非Web環境でも実行できます。 Deno、およびIoTデバイス。 複数のコンパイルを必要とする従来のアプローチとは異なり、WASMは一度コンパイルするだけで、プラグアンドプレイで即座に実行できます。

さらに、Web は、あらゆるデバイスからアプリケーションにアクセスできる唯一の真のユニバーサル プラットフォームです。 これにより、単一のコードベースを維持し、更新を簡素化し、すべてのユーザーがアプリケーションにアクセスできるようにすることもできます。 WASM は、CPU 命令に直接対応する 64 ビットおよび 32 ビット整数演算をサポートします。 浮動小数点演算をなくすことで、コンセンサスアルゴリズムに必要な決定論的な振る舞いを簡単に実現できます。 WASMはLLVMコンパイラインフラストラクチャプロジェクトによってサポートされており、LLVMにおける10年以上にわたるコンパイラ最適化の恩恵を受けることができます。 WASMは、Google、Apple、Microsoft、Mozilla、Facebookなどの大手企業によって継続的に開発されており、これらの企業が開発したブラウザのバックエンドによってサポートされています。

WASMの優れた点は、バイナリ形式であるため、ダウンロードやインストールを必要とせずにどこでも実行できることです。 ワンクリックで、必要なときにすぐにWebアプリケーションを実行できます。 ブラウザには、実行されたコードがシステムに害を及ぼすのを防ぐセキュリティメカニズムが組み込まれているため、バイナリファイルを直接ダウンロードして実行するよりもさらに安全です。 さらに、Webアプリケーションの共有は簡単で、リンクはクリック可能な文字列としてどこにでも配置できます。

2. なぜWebアセンブリが必要なのですか?

2.1 Web2の

Web は、静的コンテンツと小さなスクリプト言語のプラットフォームから、ブラウザーの組み込み機能と Web が提供する対話機能のおかげで、すばらしいアプリケーションや機能を備えた強力で人気のあるプラットフォームに進化しました。 しかし、Web アプリケーションは依然として、当初はこれらのタスクを実行するように設計されていなかった同じスクリプト言語 (JavaScript) によって駆動されます。

JavaScript は当初、Web アプリケーションの軽量ハイパーテキスト文書に対話性を持たせることを目的とした単純なスクリプト言語でした。 そのデザインは習得と書き込みが簡単で、実行速度を優先していませんでした。 何年にもわたって、ブラウザによるJavaScript解析のパフォーマンスが大幅に向上し、パフォーマンスが大幅に向上しました。

JavaScriptの実行速度が加速したことで、ブラウザ内でできることの幅が格段に広がりました。 新しいAPIには、インタラクティブなグラフィックス、ビデオストリーミング、オフラインブラウジングなどの機能が導入されています。 さらに、以前はデスクトップ環境に限定されていたアプリケーションがWebに参入するケースも増えています。 これで、ブラウザでドキュメントを簡単に編集したり、メールを送信したりできます。 ただし、特定のドメインでは、JavaScript のパフォーマンスが依然として課題となっています。 ブラウザ以外に使用するソフトウェアアプリケーション(ゲーム、ビデオ編集、3Dレンダリング、音楽制作など)について考えてみてください。 これらのアプリケーションには、広範な計算と高いパフォーマンスが必要です。 JavaScript は、これらの高パフォーマンス要件を満たすのに苦労しています。

しかし、JavaScriptを置き換えることは現実的ではなく、インターネット全体がJavaScriptに依存しているため、その目標を達成するには数十年かかるかもしれません。 さらに、JavaScriptを絶えず改善している大規模なコミュニティがあります。 実際、他の言語と比較すると、JavaScript には null や == などの点でいくつかの欠点があります。 ただし、これらの問題は、テクノロジ全体を置き換えることを正当化するほど深刻ではありません。

したがって、WebAssembly が JavaScript に取って代わることはありませんが、だからといって WASM が将来使用されないわけではありません。 実際、WASMの使用はますます広まるでしょう。 これは、WASMが画像処理やゲームなどの強力な計算機能をWebにもたらすことができるためです。 WASM を使用すると、適切に動作する Photoshop の Web ベース バージョンや、ブラウザーで毎秒 60 フレームまたはそれ以上のフレームレートで動作する 3D ゲームを作成できます。 特にゲームでは、音声処理と映像処理の同時実行や、物理効果とAIの連携が課題となっています。 WASMには、ブラウザでゲームを効率的に実行する機能があり、他の多くのアプリケーションをブラウザに導入するための扉を開きます。

上の図は、JavaScript と WebAssembly (wasm) のワークフローの比較を示しています。 wasm は JavaScript に比べてはるかに簡潔であることがわかります。

2.2 Web3の

WASM 仮想マシン

2018年、イーサリアムのエコシステムは、EVMよりもパフォーマンスが優れていると考えられていたため、WASM VMをスマートコントラクト仮想マシンとして使用することについて議論し始めました。 EVMの発明者であるGavin Wood氏は、EVMをWASMに置き換える可能性を表明しており、Vitalik氏は、より多くの開発ニーズを満たすために、Ethereum 2.0をWASMコントラクト(eWASM)をサポートするようにアップグレードすると述べています。 今日、WASM契約の開発はすでに具体化しています。

2.3 評価基板 (EVM) の設計方法 なぜ非効率なのですか?

アーキテクチャのサイズの問題

従来のコンピュータには、32ビットまたは64ビットの入力を受け入れる命令セットがあります。 しかし、EVMは、イーサリアムのハッシュアルゴリズムをより簡単に処理できるように設計された256ビットコンピュータであり、明示的な256ビット出力を生成するという点で、他とは一線を画し、ユニークです。

しかし、EVMプログラムを実行する実際のコンピュータは、スマートコントラクトを実行するために256ビットワードをネイティブアーキテクチャに分割する必要があるため、システム全体が非効率的で実用的ではありません。

さらに、イーサリアム上でEVMの基本的なオペコードを使用してSHA256のような複雑なアルゴリズムを実装したい場合は、大変なことになります。 命令セットを介して複雑なプログラムを実行するという高いガスコストの問題に対処するために、イーサリアムはプログラムをEVMにコンパイルし、一定量のガスを消費するプリコンパイルの概念を導入しました。 注目すべきプリコンパイルはイーサリアムのハッシュアルゴリズムで、仮想マシン内に実装すると、コントラクトが呼び出されたときに非常に高額な料金が発生するためです。

肥大化したプリコンパイル

プリコンパイルの問題は、仮想マシンの肥大化と複雑さが継続的に増大し、核心的な問題である現在の命令セットと仕様の非効率的で貧弱な設計に対処できないことです。

これらの複雑なプログラムのプリコンパイルを必要とせず、代わりに基本的な命令を通じて目的の結果を効率的に達成する新しい仕様と命令セットを定義できるとしたらどうでしょうか。 ここでWASMの出番です。

2.4 EVMとWASM VMの比較

  • スピード:WASMは、EVMと比較してより高速な実行速度を提供することを目的としています。 EVMはスマートコントラクトのコンパイルと実行に効率の問題があるかもしれませんが、WASMはコンパイルされたコードに直接変換することで読み込み速度と処理能力を向上させます。
  • プリコンパイル済みコントラクト:EVMは、暗号計算を効率的に実行するためにプリコンパイル済みコントラクトに依存していますが、これはハードフォークのリスクをもたらす可能性があります。 WASMは、プリコンパイルされたコントラクトの必要性を排除し、開発者が効率的かつ高速なスマートコントラクトを作成できるようにします。
  • トランザクションコスト:WASM仮想マシンの高速化により、トランザクションのスループットが大幅に向上し、契約の展開とトランザクションのコストが削減されます。 WASMコントラクトは、イーサリアムネットワークにおける高い取引手数料と混雑の問題に対処します。
  • 柔軟性と相互運用性:WASMは、スマートコントラクト開発に利用できる言語の範囲を拡張し、Rust、C++、JavaScriptなど、WASMにコンパイルされるあらゆる高水準言語の使用をサポートします。 つまり、開発者はインクのような成熟したフレームワークを含む、好みの言語でスマートコントラクトを書くことができます。Rust または Ask!AssemblyScript の場合。

EWASMチームは現在、イーサリアムにWebAssemblyを統合して、より効率的で簡素化された実行レイヤーを確保し、イーサリアムを完全に分散型コンピューティングプラットフォームとして適したものにしています。 WASMは、DfinityやEOSなど、他の多くのプロジェクトで標準として採用されており、どちらも実行レイヤーを強化するために使用しています。

2.5 スタイラス(アービトラム)

Stylusプロジェクトは、Arbitrum Ethereumレイヤー2ネットワーク上のイニシアチブであり、WebAssembly(WASM)仮想マシンを導入することでスマートコントラクトの実行パフォーマンスを向上させることを目的としています。 契約はSolidityよりも迅速に実行でき、ガス代も削減できます。 これにより、Arbitrumネットワーク上で高性能なスマートコントラクトを簡単に構築でき、現在、C、C++、Rustでのコンパイルをサポートしています。

カスタムプリコンパイルのサポート: Stylusはカスタムプリコンパイルもサポートしており、開発者は独自のRustまたはC++プリコンパイルをArbitrumネットワークにデプロイできます。 これにより、オンチェーンのアップグレードを待たずに、新しい暗号化アルゴリズムやその他の特定の機能をオンチェーンで導入することができます。 例えば、テンソル計算をプリコンパイルして推論コストを削減することができ、オンチェーンの機械学習に有益です。

EVMとの相互運用性:Stylusは、イーサリアム仮想マシン(EVM)との相互運用性を通じて、既存のイーサリアムエコシステムとの統合を実現します。 つまり、Stylus コントラクトは既存の EVM コントラクトと対話し、EVM と同じグローバル状態を共有できます。

再入性: Cosmos Wasm とは異なり、Stylus Rust SDK には再入機能が導入されており、開発者は手動で有効にすることができます。 これにより、コントラクトの相互運用性に対する柔軟性が高まりますが、開発者はセキュリティを確保するために状態を慎重に管理する必要があります。

Arbitrumの活発なエコシステムに基づいて、Stylusの統合はおそらく最も意味のあるWASM統合です。 また、zkRollupフィールド間でのArbitrumの競争力も強化します。

2.6 ギア(ポルカドット)

Gearプロトコルは、スマートコントラクトをホストするためのツールとして機能するPolkadotパラチェーンとして展開できる技術を作成しています。 Polkadotと同様に、GearもSubstrateフレームワークを利用しており、特定のアプリケーション向けにさまざまなブロックチェーンを作成するプロセスを簡素化します。 Substrateは、すぐに使える機能を備えているため、ユーザーはプロトコル上にカスタムエンジンを作成することに集中できます。

以前は、ブロックチェーンを立ち上げるコストは高かったが、Gearを使用すると、dApp開発者はブロックチェーン全体をゼロから構築して運用するのではなく、プロジェクトに集中することができます。

Gearプロトコルのメインエンジンは、スマートコントラクトモジュールです。 Gearの場合、スマートコントラクトは、Rust、C、C++などのさまざまな言語でコンパイルされたWebAssemblyプログラムです。 仮想通貨の世界以外の開発者にとっては、使い慣れた環境でスマートコントラクトを構築できるため、参入障壁は低くなります。 開発者は、スマートコントラクトプログラミング言語を試す方が簡単だと感じています。

Gearのスマートコントラクトアーキテクチャは、内部でアクターモデルを利用し、以下の機能を提供します。

  • 不変プログラム用の永続メモリ
  • 非同期メッセージ処理
  • ブロックチェーンのコンテキストのための最小限で直感的で十分なAPIサーフェス
  • オンチェーンコンポーネント間のアクター通信プロキシモデルにより、コンポーザビリティを高め、並列コード実行およびシャーディングとの互換性を向上させます。

各プログラムには固定量のメモリがあり、Gearはそれを制御できます。 プログラムは、自身のメモリ内でのみ読み取りと書き込みを行うことができ、他のプログラムのメモリ空間にアクセスすることはできません。 各プログラムには独自の独立したメモリ空間があり、Gearノードの情報を並列に処理できます。

2.7 コスモスワズム(コスモス)

CosmWasm は、Cosmos-SDK と簡単に統合できる、モダンで強力な Wasm ベースのスマート コントラクト プラットフォームです。 これは、CosmWasmの主な利点の1つであるCosmWasmの主な利点の1つを示しています:CosmWasmで書かれたコントラクトは、IBC(Inter-Blockchain Communication)とネイティブに緊密に統合されており、開発者とユーザーはマルチチェーンの未来に入ることができます。 現在、Rust のみがサポートされています。

CosmWasmの利点

  1. セキュリティ:Rustプログラミング言語を使用してスマートコントラクトのセキュリティを強化します
  2. クロスチェーン互換性:Cosmosエコシステム内のIBC(Inter-Blockchain Communication)プロトコルをサポートします。
  3. パフォーマンス:従来のイーサリアム仮想マシン(EVM)と比較して、特定のケースでより高い効率と低いトランザクションコストを示します。
  4. 開発者に優しい: Rust 言語の型とメモリの安全性機能は、スマートコントラクトの特定の種類のエラーを減らすのに役立ちます。

課題と制限

  1. 学習曲線:Rustは、Solidityのようなより一般的に使用されているスマートコントラクト言語と比較して、学習曲線が急勾配である可能性があります。 広く採用される可能性を高めるために、CosmWasm はより多くの言語でのコンパイルをサポートする必要があります。
  2. エコシステムとツール:CosmWasmの開発ツールとエコシステムは、成長しているものの、イーサリアムのような成熟したスマートコントラクトプラットフォームと比較して、まだ比較的限られている可能性があります。
  3. 市場シェアと認知度:スマートコントラクトプラットフォームの分野では、CosmWasmはEthereumやBinance Smart Chainなどのプラットフォームと比較して認知度が低い可能性があり、開発者やユーザーを引き付ける能力に影響を与えます。
  4. メンテナンスとアップグレードの課題:CosmWasmはコントラクトのアップグレード機能を提供しますが、スマートコントラクトのアップグレードの維持と管理は依然として複雑なタスクであり、セキュリティの脆弱性を回避するために慎重に処理する必要があります。
  5. 互換性の問題:EVMやその他のスマートコントラクト環境に慣れているプロジェクトは、CosmWasmに移行する際に互換性の問題に直面する可能性があります。

2.8 ZK-WASMの

wasm 仮想マシンに加えて、ZKWASM と呼ばれる最近の新しいテクノロジもあります。 発明者であるDelphinus Labsは、GitHubでZK-WASMのコードをオープンソース化しました。 ZKWASMを使用すると、開発者は実行された計算を再実行せずに正確性を検証できます。 ZKWASMを活用することで、開発者はさまざまなプログラミング言語を使用してゼロ知識証明(ZKP)アプリケーションを柔軟に構築できます。 これらのアプリケーションは、Webブラウザでシームレスに実行できます。

ZKWASMは、SNARGとゼロ知識証明を組み合わせたZKSNARKから派生しています。 さらに説明しましょう。 通常、ZKSNARKを使用するには、算術回路言語またはPinocchio、TinyRAM、Buffet/Pequin、Geppetto、xJsnarkフレームワーク、ZoKratesなどの回路に適した言語でプログラムを作成する必要があります。 これは既存のプログラムにとって障壁となり、ZKSNARKの力を活用することを困難にしています。 ただし、ソースコードレベルではなく、仮想マシンのバイトコードレベルでZKSNARKを使用し、ZKSNARKをサポートする仮想マシンを実装するという別の方法があります。 Delphinus Labsは、WASM仮想マシン全体をZKSNARK回線に組み込むことで、後者のアプローチを採用しました。 その結果、既存のWASMアプリケーションは、変更することなくZKWASM上で直接実行できます。 したがって、クラウドサービスプロバイダーは、計算結果が正直に計算され、個人情報を開示しないことをすべてのユーザーに証明できます。

ZKWASMは、ブラウザで実行される操作のオンチェーン検証を可能にするなど、さまざまなユースケースを提供します。 これにより、ブロックチェーン上で検証可能なWebベースのインタラクションが可能になります。 その他のユースケースには、オラクルサービス、オフチェーン計算、自動化、Web2とWeb3の間のギャップを埋める、機械学習とデータ処理の証明の生成、さらにはゲームやソーシャルアプリケーションなどがあります。 zkWASMは、Web3の可能性を広げ、Web2開発者をこの変革的な状況に統合します。

Delphinus LabのZKWASMの実装により、開発者はゼロ知識証明の力を利用してアプリケーションのセキュリティとプライバシーを強化し、より信頼性の高い分散型デジタルエコシステムへの道を開くことができます。

3. おわりに

Webのパフォーマンスとスマートコントラクトプラットフォーム実行レイヤーの将来は有望です。 dAppsはパフォーマンスが向上するだけでなく、WASMを統合することで、RustやGoなどの主流言語に精通している人は、Solidityやその他のブロックチェーン開発言語の複雑さを学ぶことなく、スマートコントラクトを簡単に開発できるようになります。 Evans Data Corporation によると、世界には約 2,700 万人の開発者がおり、この数は着実に増加しており、2024 年までに 2,870 万人以上に増加すると予想されています。 しかし、ブロックチェーン分野の開発者数はまだ3万人に満たず、開発者全体の約1000分の1に過ぎません。 この数は着実に増加していますが、新しいスマートコントラクト言語を学ぶことは、開発者がブロックチェーン業界に参入する上で依然として障壁となる可能性があります。

しかし、ますます多くのブロックチェーンが、コンパイルされたスマートコントラクトのバイトコードとしてWeb Assemblyをサポートし始めています。 WASMは、効率性、相互運用性、および幅広いユースケースをブロックチェーンにもたらします。 また、開発者の扉を開く鍵としても機能し、ブロックチェーン開発への参入障壁を下げます。 近い将来、Web 2.0の開発者がブロックチェーン開発に挑戦したいと思ったとき、Python、C++、JavaScriptなどの使い慣れた言語を使用してブロックチェーン上に大規模なアプリケーションを構築し、分散型ネットワークの価値を最大化できることを想像してみてください。 まずはクリエイター(開発者)のハードルを下げ、次にユーザーのハードルを下げて、マスアダプションへと向かう。

4. 目次

https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21

https://wiki.polkadot.network/docs/learn-wasm

https://docs.arbitrum.io/stylus/stylus-gentle-introduction

https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c

https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8

https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf

https://github.com/DelphinusLab/zkWasm

この記事に関するアドバイスとガイダンスを提供してくれた Maggie と Xinyou Ji (CMU) に感謝します。

免責事項:Foresight Venturesのすべての記事は、投資アドバイスを意図したものではありません。 投資にはリスクが伴いますので、ご自身のリスク許容度を見極め、慎重に投資判断を行ってください。

免責事項:

  1. この記事は[Foresight Research]からの転載です。 すべての著作権は原著作者[Mike@ Foresight Ventures]に帰属します。 この転載に異議がある場合は、 Gate Learn チームに連絡していただければ、迅速に対応いたします。
  2. 免責事項:この記事で表明された見解や意見は、著者のものであり、投資アドバイスを構成するものではありません。
  3. 記事の他言語への翻訳は、Gate Learnチームによって行われます。 特に明記されていない限り、翻訳された記事を複製、配布、盗用することは禁止されています。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!