> 文は、技術的な観点から、Parityの中核開発者であるKian Paimaniが、Polkadotの新しいJAMプロトコルを解説し、JAMがPolkadotエコシステムに新たなスケーラビリティをもたらす方法について説明します。 **執筆者: Kian Paimani、Parity Core 開発者****コンパイラ:Polkadot Labs** ***「ポリカナレッジマップ」****は、ポリカに関するゼロからの初心者向けの記事です。ポリカの基礎から始めて、ポリカについての包括的な理解を提供します。これは大きなプロジェクトであり、挑戦に満ちていますが、このような努力を通じて、ポリカを正しく理解し、ポリカに詳しくない人々がポリカに関する知識を簡単かつ迅速に掌握できるようにしたいと考えています。****今日はこのコーナーの第 148 号であり、この記事は、Parity のコア開発者であるキアン・パイマニがポリカの最新の JAM プロトコルを技術的な観点から解説し、JAM がポリカエコシステムにどのような新たなスケーラビリティをもたらすかをより良く理解するのを助けるものです。この記事は筆者の一人称の視点で書かれています。*** *以下は、Polkadot 1、Polkadot 2 がどのように JAM に発展したかの詳細な説明です。(詳細については****を参照してください。)本記事は技術者向けで、特にポロカに詳しくないがブロックチェーンシステムにある程度理解がある技術者や、他のエコシステム関連技術に詳しい読者を対象としています。* *私は、JAMのホワイトペーパーを読む前に、この記事を読むことが良い準備だと思います。(詳細はこちらをご覧ください:****)* ## 背景 本文では、読者が以下の概念に精通していることを前提としています: * ブロックチェーンを状態遷移関数として記述します。*「状態」とは何かを理解します。 (詳細については、\_sdk\_docs/reference\_docs/blockchain\_state\_machines/index.html を参照してください)* 经济安全和プルーフオブステーク。(详情请参见:、) ## 巻頭言:Polkadot1 まず、私がPolkadot1で最も革新的だと思う特徴を振り返りましょう。 **社会的なレベル:** * ポルカは、分散型自律組織(DAO)であり、完全にオンチェーンベースの、自己実行型のガバナンスを実現し、フォークなしでのランタイムのアップグレードを含みます。* アメリカ証券取引委員会(SEC)は、DOTを証券ではなくソフトウェアと見なしています。(詳細はこちらを参照してください:)* ウェブ開発に関するほとんどの作業は、財政的支援を受けた企業(例:Parity:)ではなく、Polkadot Fellowship(:)参照)によって行われています。 **技術レベル:** * ポルカは共有セキュリティとシャーディング実行を実現しています。* WASMベースのメタプロトコル(詳細は_sdk_docs/reference_docs/wasm_meta_protocol/index.htmlを参照)を使用し、ブロックチェーンのコードをバイトコード形式で状態に保存します。これにより、ほとんどのアップグレードがフォークなしで実現でき、異種シャーディングも実現できます。 「異様シャーディング」に関する詳細情報については、関連セクションを参照してください。 ## シャーディング実行:重要ポイント 現在、私たちは、他のLayer2「ブロックチェーン」ネットワークをホストするLayer1ネットワークについて議論しており、これはポロカとイーサリアムのようなものです。したがって、Layer2とパラチェーンという用語は互換的に使用できます。 ブロックチェーンの拡張性の核心的な問題は、Proof-of-Stakeの暗号経済性を利用して、あるバリデータのグループが信頼できるコードの実行を保証できることです。デフォルトでは、これらのバリデータはお互いのすべての仕事を再実行する必要があります。したがって、すべてのバリデータに常にすべてを再実行するように強制する限り、システム全体はスケーラブルではありません。 上述の絶対再実行原則が変わらない限り、このモデルにバリデータの数を増やしても、システムのスループットは実際には向上しません。  上記は、単一のブロックチェーン(シャーディングブロックチェーンとは対照的)の表示です。すべてのネットワークバリデータが入力(つまり、ブロック)を順番に処理します。 このようなシステムでは、Layer1がより多くのLayer2をホストする場合、すべてのバリデーターは現在、すべてのLayer2の作業を再実行する必要があります。明らかに、この方法はスケーラブルではありません。Optimistic Rollupsは、詐欺証明がされた場合にのみ再実行されるため、この問題を回避する方法の一つです。SNARKに基づくRollupsは、SNARK証明を検証するコストが生成するコストよりもはるかに低いことを利用して、この問題を回避するため、すべてのバリデーターがSNARK証明を検証できるようにします。詳細については、「付録:スケーラビリティスペースマップ」を参照してください。 シャーディングの簡単な解決策は、バリデータセットをより小さなサブセットに分割し、この小さなサブセットでLayer2ブロックを再実行させることです。この方法の問題は何ですか?私たちはネットワークの実行と経済の安全性にシャーディングを行っています。このようなLayer2のセキュリティはLayer1よりも低く、バリデータセットをさらに多くのシャーディングに分割すると、そのセキュリティはさらに低下します。  Optimistic Rollups とは異なり、再実行コストが常にかかることができないため、ポカはシャーディングを設計段階で考慮しており、一部のバリデータにLayer2ブロックを再実行させ、すべてのネットワーク参加者に十分な暗号経済証拠を提供し、Layer2ブロックの真正性を再実行時と同じくらい安全であることを証明します。これは、新しい(最近正式に発表された)ELVESメカニズムによって実現されています。(詳細はこちらを参照:) 要するに、ELVESは「疑いの目を持ったロールアップ」メカニズムと見なすことができます。複数のバリデータが他のバリデータに特定のLayer2ブロックが有効かどうかを積極的に問い合わせることで、そのLayer2ブロックの有効性を非常に高い確率で確認することができます。実際には、何らかの紛争が発生した場合、すぐに全てのバリデータ集合に参加を要請することになります。Polkadotの共同創設者であるRob Habermeierは、この点を詳しく説明した記事を書いています。(詳細はこちらを参照してください:) ELVESにより、Polkadotは「シャーディング実行」と「共有セキュリティ」という以前は相反すると考えられていた2つの特性を同時に備えることができるようになりました。これはPolkadot1がスケーラビリティの面での主要な技術的成果です。  現在、引き続き「CORE」比較について話し合いましょう。 シャーディングを実行するブロックチェーンは、CPUと非常に似ています。CPUには複数の並列実行命令があるコアがあるように、PolkadotはLayer2ブロックを並列処理できます。これがPolkadot上のLayer2が「パラチェーン」と呼ばれる理由であり、より小さなバリデータのサブセットによって単一のLayer2ブロックが再実行される環境は「コア」と呼ばれます。各コアは「協調するバリデータのグループ」として抽象化できます。 単一のブロックチェーンを、任意の時間範囲で1つのブロックのみ摂取するものと考えることができますが、ポリカは各時間範囲で1つのリレーチェーンブロックと各コアの1つのパラレルチェーンブロックを摂取します。 ## 異質性 これまで、私たちは拡張性とポリカが提供するシャーディングの実行について話しました。注目すべきは、ポリカの各シャーディングが実際にはまったく異なるアプリケーションであるということです。これは、バイトコードに格納されたメタプロトコルを使用して実現されます。つまり、ブロックチェーン自体の状態にバイトコードとしてブロックチェーンの定義を格納するプロトコルです。Polkadot 1.0では、WASMが優先バイトコードとして使用され、JAMではPVM/RISC-Vが採用されました。 要するに、これがポーカが異種分散型ブロックチェーンと呼ばれる理由です。(詳細はこちらを参照してください:)各Layer2はまったく異なるアプリケーションです。  ## ポルカドット2 Polkadot2 の重要な部分は、コアの使用をより柔軟にすることです。元のポカモデルでは、コアのリース期間は6ヶ月から2年までで、資源豊富な企業には適していますが、小さなチームには適していません。ポカのコアは、「アジャイルコアタイム」と呼ばれる、より柔軟な方法で使用できる特性を持っています(詳細はこちらを参照してください:)。このモードでは、ポカのコアのリース期間は1ブロックまで短くすることも、1ヶ月まで長くすることもでき、長期的なリースを希望するユーザーに価格上限の保証を提供します。  Polkadot 2 の他の特徴は、私たちが議論している過程で徐々に明らかになっているため、ここでは余分な説明は必要ありません。 ## 核心内部与オンチェーン操作 JAMを理解するためには、まずLayer2ブロックがPolkadotコアに入ると何が起こるかを理解する必要があります。 以下は大幅に簡略化されています。 振り返ってみると、コアは主に一連のバリデータから構成されています。したがって、「データがコアに送信された」と言うと、実際にはこのバリデータグループにデータが渡されることを意味しています。 0. Layer2ブロックとその一部の状態がコアに送信されます。これらのデータには、Layer2ブロックを実行するために必要なすべての情報が含まれています。 1. コア内の一部の検証者は、Layer2ブロックを再実行し、コンセンサスに関連するタスクを続行します。 2.核心バリデータは、他のバリデータ(コア外のバリデータ)に必要なデータを再度提供します。他のバリデータは、ELVESのルールに従って、このLayer2ブロックを再実行するかどうかを決定し、この操作を完了するためにこれらのデータが必要です。 注意してください。これまでのすべての操作は、ポカのメインブロックおよび状態遷移関数の外で行われています。すべてはコア内部およびデータの利用可能性層で起こります。 3. 最後に、Layer2 の最新の状態の一部がポカのメインリレーチェーンで見えるようになります。これまでのすべての操作とは異なり、この操作は実際にLayer2ブロックを再実行するよりもはるかに安価であり、ポカのメインステータスに影響を与え、ポカブロックで見え、すべてのポカバリデータによって実行されます。 上記の内容から、私たちはポロカが実行しているいくつかの操作を探ることができます: まず、ステップ1から、Polkadotには従来のブロックチェーンの状態遷移関数とは異なる新しいタイプの実行があると結論付けることができます。 通常、ネットワーク内のすべてのバリデータが特定のジョブを実行すると、メインブロックチェーンの状態が更新されます。 これをオンチェーン操作と呼び、ステップ3で行います。 ただし、コア内部 (ステップ 1) で何が起こるかは異なります。 私たちは、この新しいタイプのブロックチェーンコンピューティングをインコアコンピューティングと呼んでいます。 次に、2番目のポイントから、ポロカはネイティブのデータ可用性(Data-Availability、以下DA)レイヤーを提供し、Layer2は自動的にそれを使用して一定期間内に実行証拠を利用できるようにしています。ただし、DAレイヤーに公開できるデータブロックは固定されており、常にLayer2ブロックの再実行に必要な証拠です。さらに、パラチェーンのコードはDAレイヤーデータを読み取りません。 上記の内容を理解することは、JAMを理解する基礎です。以下にまとめます: * **CORE内で実行**(in-core execution):コア内で発生する操作を指します。その特徴は豊富で拡張可能であり、Crypto経済学とELVESによってオンチェーン実行と同じ安全性を実現しています。* **オンチェーン実行**(on-chain ution):すべてのバリデータによって実行される操作を指します。経済的な保証により、バリデータはデフォルトで安全性を得ますが、コストが高く制限も多いです。なぜなら、すべての人がすべての操作を実行しているからです。* **数据可用性**(Data Availability):ポロカバリデータは一定時間内に一定のデータの可用性を保証し、他のバリデータにそのデータを提供する能力を提供します。 ## ジャム 前の部分を理解することで、JAMの紹介にスムーズに移行できます。 JAMは、波卡に触発されて設計された新しいプロトコルであり、完全に互換性があり、ポルカドットのリレーチェーンを置き換え、コアの使用を完全に分散化し制限なくします。 JAMはPolkadot2上に構築され、波卡のコアをよりアクセスしやすくすることを目指していますが、方法はagile-coretimeよりも柔軟で制約がありません。 * Polkadot2は、Layer2のコアデプロイメントをより柔軟にします。* JAMは、それらのアプリケーションがブロックチェーンやLayer2のようには見えなくても、どんなアプリケーションでもPolkadotのコアに展開できるようにすることを目指しています。 これは、ブロックチェーン上での実行、コア内での実行、およびDAレイヤーの3つの主要な原始的な概念を開発者に公開することによって主に実現されます。 言い換えれば、JAMでは、開発者は次のようなものに触れることができます: * 完全プログラム可能性化核心内和オンチェーン的工作。* PolkadotのDAレイヤーに任意のデータを読み書きすることができます。 これはJAMターゲットの基本的な説明です。言うまでもなく、ここでは多くの簡略化が行われ、そしてプロトコルはまだ変化する可能性があります。 この基本的な理解を持っていると、次のセクションでJAMの詳細をさらに探ることができます。 ### **1 サービスと作業項目** JAMの背景には、以前はレイヤー2 /パラチェーンと呼ばれていたものが「サービス(Service)」と呼ばれるようになり、以前はブロック/トランザクションと呼ばれていたものが「ワークアイテム(Work-Item)」または「ワークパッケージ(Work-Package)」と呼ばれるようになりました。具体的には、ワークアイテムは特定のサービスに属し、ワークパッケージはワークアイテムの集合です。これらの用語は意図的に汎用性が高く設計されており、ブロックチェーン/Layer2を超えるさまざまなユースケースをカバーしています。 3つのエントリポイントで構成されるサービスがあります。そのうちの2つは、fn refine()とfn accumulate()です。前者は、サービスがコア内で実行される内容を記述し、後者はサービスがオンチェーンで実行される内容を記述します。 最後に、2つのエントリーポイントの名前も、プロトコルがJAM(Join Accumulate Machine)と呼ばれる理由です。Joinはfn refine()を指し、すべてのPolkadotコアが異なるサービスの大量の作業を並列処理するときに、この段階を指します。データはフィルタリングされた後、次の段階に進みます。Accumulateは、上記のすべての結果が主JAMステータスに蓄積されるプロセスを指し、つまりオンチェーンの実行部分を指します。  ワークアイテムは、コア内またはオンチェーンで実行するコードを正確に指定し、分散データレイクからの読み取り/書き込みの方法/可否/場所を指定できます。 ### **2 セミコンシステント** XCM(Polkadotが選んだパラチェーン通信言語)に関する現在の情報を見ると、すべての通信が非同期であることがわかります。(詳細はこちらを参照してください:)つまり、メッセージを送信した後、その応答を待つことはできません。 非同期性はシステムの一貫性の欠如を示すものであり、永久シャーディングシステム(例:Polkadot 1、Polkadot 2、および現在のETH Layer2エコシステム)の主要な欠点です。 然而、灰皮書の第2.4節で述べられているように、すべてのテナントに常に同期された完全に一貫したシステムは、普遍性、アクセス可能性、または柔軟性を犠牲にすることなく、ある程度までしか上昇できないことがあります。(詳細はこちら:) 同期≈一貫性||非同期≈の不整合 これは JAM が際立つ別の分野でもあります:JAM はさまざまな特性を導入することで、新しい中間状態である半一貫性システムを実現しています。このシステムでは、頻繁に通信するサブシステムがお互いに一貫した環境を作成する機会があり、システム全体を一貫させることを強制しません。これは、グレーペーパーの著者である博士の Gavin Wood 氏のインタビューで最もよく説明されています:(詳細はこちらを参照:\_referring\_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source\_ve\_path=OTY3MTQ) もう一つの理解方法は、ポルカ/JAMをシャーディングシステムと見なすことであり、これらのシャーディングの境界は流動的であり、かつ動的に決定されるものです。 ポカは常にシャーディングであり、完全に異質です。 現在、それはシャーディング、異質性によって分かれ、そしてこれらのシャーディングの境界は柔軟に決定されることができ、Gavin Woodがツイッターで言うように、「半一貫性」システムです。(詳細はこちらを参照:\_src=twsrc%5Etfw、) これを可能にする機能には、01928374656574839201が含まれています。 1. 無状態で並列なコア内での実行にアクセスし、異なるサービスは同じコア内で特定のブロックにある他のサービスと同期してインタラクションでき、またオンチェーンで実行され、サービスはすべてのコアを超えたすべてのサービスの結果にアクセスできます。 2. JAMは特定のサービススケジュールを強制的に実行しません。頻繁に通信するサービスは、そのオーソライザに経済的なインセンティブを提供することができ、これらの頻繁に通信するサービスを含むジョブパッケージを作成します。これにより、これらのサービスは同じコア内で実行され、相互間の通信は同期環境で行われるかのようになります。 3. さらに、JAMサービスはDAレイヤーにアクセスし、一時的ですが非常に安価なデータレイヤーとして使用できます。データがDAに配置されると、最終的にすべてのコアに伝播しますが、同じコア内ではすぐに使用できます。したがって、JAMサービスは自分自身を連続するブロックで同じコアにスケジュールすることにより、より高いデータアクセスレベルを享受できます。 注意すべきは、上記の内容はJAMでは可能ですが、プロトコル層で強制されていないことです。したがって、理論的にはいくつかのインターフェースが非同期である可能性がありますが、巧妙な抽象化とインセンティブ措置により、実際には同期的に表現されることができます。次のセクションで議論するCorePlayは、このような例です。 ### **3コアプレイ** 本セクションでは、JAM環境での実験的な考えであるCorePlayについて説明しており、これは新しいスマートコントラクトプログラミングモデルとして記述することができます。本文執筆時点では、CorePlayはまだ詳細に説明されておらず、概念のままです。 CorePlayを理解するためには、まずJAMが選んだ仮想マシンであるPVMを紹介する必要があります。 ### **4 PVM** PVMは、JAMとCorePlayの重要な詳細です。PVMの低レベルの詳細は、この記事の範囲を超えていますので、ドメインの専門家のグレーペーパーを参照することをお勧めします。ただし、この記事のニーズに応えるために、PVMのいくつかの特性について説明します。 *効率的な計量* 実行を一時停止および再開する能力 後者はCorePlayにとって特に重要です。 CorePlayは、JAMを使用した柔軟なプリミティブを使用して、同期可能でスケーラブルなスマートコントラクト環境を作成する例です。CorePlayは、アクターベースのスマートコントラクトを直接JAMコアにデプロイすることをお勧めし、同期プログラミングインターフェースを利用して通常のfn main()と同様にコーディングし、let\_result=other\_coreplay\_actor(data).await?を介して通信します。other\_coreplay\_actorが同じJAMブロック上のコアにある場合、この呼び出しは同期的に行われます。他のコア上にある場合、アクターは一時停止し、後続のJAMブロックで再開されます。これは、JAMサービスとその柔軟なスケジューリング、およびPVMの特性によって可能になるものです。 ### **5 CoreChainsサービス** 最後に、JAMがPolkadotと完全互換性がある主な理由をまとめましょう。Polkadotの主要な製品は、アジャイルなコア時間方式で動作するパラチェーン(Parachains)であり、この製品はJAMでも引き継がれています。 JAMで最初に展開されたサービスはおそらくCoreChainsまたはParachainsと呼ばれるでしょう。このサービスは既存のPolkadot-2スタイルのparachainsをJAM上で実行することを可能にします。 さらにサービスを展開するにはJAMに展開し、既存のCoreChainsサービスと通信することができますが、Polkadotの既存製品は引き続き強力であり、既存のパラチェーンチームに新たな扉を開くだけです。01928374656574839201 ## 附录:データシャーディング この記事のほとんどは、シャーディングの実行に関する観点から拡張性について検討しています。同じ問題をデータの観点から検討することもできます。興味深いことに、これは前述の半一貫性の場合と似ています:原則として、完全に一致するシステムがより優れていますが、拡張できません。完全に一致しないシステムは拡張可能ですが、理想的ではありません。代わりに、JAMは半一貫性モデルを使用して新しい可能性を提案しています。 **完全一致システム**:これは、完全に同期されたスマートコントラクトプラットフォーム、例えばソラナやイーサリアムのレイヤー1にのみ展開される勇敢なプラットフォームで見られます。すべてのアプリケーションデータはオンチェーンに格納され、すべての他のアプリケーションに簡単にアクセスできます。これはプログラム化された完璧な特性ですが、拡張性に欠けます。 **不一致系统**:アプリケーションデータはLayer1の外部および異なる、分離されたシャーディングに保存されています。非常にスケーラブルですが、組み合わせ性能が低いです。PolkadotやEthereumのRollupモデルがこのケースに該当します。 JAMは、上記の2つの機能を提供するだけでなく、開発者が任意のデータをJAM DAレイヤーに公開することを可能にし、ある種のオンチェーンデータとオフチェーンデータの中間地帯となります。DAレイヤーを利用した新しいアプリケーションデータのほとんどを書き込み、JAMの状態に絶対に重要なデータだけを永続化することができます。 ## 附录:スケーラビリティスペースマップ このセクションでは、ブロックチェーンのスケーラビリティ領域に対する私たちの見解を再解釈しています。これはホワイトペーパーでも説明されており、ここではより簡潔なバージョンが提供されています。 ブロックチェーンの拡張性は、従来の分散システムで使用されている方法に大きく従っています:スケーリングアップ(垂直)およびスケーリングアウト(水平) 向上拡張は、ソラナなどのプラットフォームで行われる作業です。コードとハードウェアを最適化して、最大のスループットを実現します。 拡張は、イーサリアムとポリカの採用する戦略であり、各人の作業量を減らすことです。従来の分散システムでは、これはより多くの複製マシンを追加することによって実現されます。ブロックチェーンでは、「コンピュータ」はネットワーク全体のバリデータの集合です。これらの間で作業を分配する(ELVESが行うように)か、楽観的に彼らの責任を減らす(楽観的ロールアップが行うように)ことにより、バリデータの集合全体の作業負荷を減らし、システムの拡張を実現します。 ブロックチェーンでは、アウトバウンドエクスパンションは「すべての操作を実行する必要のあるマシンの数を減らす」というようなものです。 まとめると、以下のとおりです: 1. 上向きに拡張する:高性能ハードウェア+単一のブロックチェーンの最適化。2. 外に拡張する:3. 楽観的なロールアップ4. SNARKに基づいたロールアップ5. ELVES:ポルカドットの皮肉なロールアップ(シニカルロールアップ) 付録:同じハードウェア、カーネルの更新 本セクションは、Sub02023でRob Habermeierが提供した比喩に基づいており、ポカ:カーネル/ユーザーランド|Sub02023-YouTube(詳細についてはこちらを参照してください:)、JAMをポカのアップグレードとして示しています:同じハードウェア上でのカーネルの更新。 典型的なコンピュータでは、スタック全体を3つの部分に分割することができます: 1.ハードウェア2.カーネル3.ユーザースペース ポカでは、ハードウェア、つまり計算とデータの可用性を提供することが常にコアであり、前述のように。 ポルカでは、カーネルは実際には[9]これまでに2つのパートが含まれています: 1.パラチェーン(パラチェーン)プロトコル:一种意见化、固定的使用核心的方式。 2. 一組の低レベルの機能、例えばDOTトークンとその可転送性、ステーク、ガバナンスなど。 これらの両方はポカのリレーチェーン(Relay Chain)に存在しています。 ユーザースペースアプリケーションは、パラチェーンのインスタンス、それらのネイティブトークン、およびそれらの上に構築された他のコンテンツです。 このプロセスを次のように可視化できます:  波卡は常に、より多くのコア機能をパラチェーンという特定のユーザーに移すことを考えてきました。これが Minimal Relay RFC が達成しようとしている目標です。(詳細はこちらを参照してください:)  これは、ポカのリレーチェーンが提供するパラチェーンプロトコルのみを処理することを意味し、ある程度、カーネルスペースを縮小することを意味します。 一旦このアーキテクチャが実装されると、JAM マイグレーションのビジュアライゼーションがより容易になります。JAM はポカのカーネルスペースを大幅に縮小し、より汎用性を持たせます。さらに、Parachains プロトコルは、同じコア(ハードウェア)とカーネル(JAM)でアプリケーションを書くことができる数少ない方法の1つであるため、ユーザースペースに移動します。 これは、JAMが単なるポロカのリレーチェーンの代替品であり、パラチェーンの代替品でない理由を再度説明しています。 言い換えれば、JAMの移行はカーネルのアップグレードと見なすことができます。基本的なハードウェアは変わらず、古いカーネルのほとんどの内容がユーザースペースに移動され、システムが簡素化されます。  この記事の議論に参加したい場合は、フォーラムで意見を投稿してください。 フォーラムのディスカッションに参加する方法については、当社が発行したPolkadotフォーラムの使用ガイドを参照してください:「ポロカの議論に参加する方法:ポロカ公式フォーラムの使用ガイド」
技術的な観点からポカのJAMを解明する
執筆者: Kian Paimani、Parity Core 開発者
コンパイラ:Polkadot Labs
***「ポリカナレッジマップ」****は、ポリカに関するゼロからの初心者向けの記事です。ポリカの基礎から始めて、ポリカについての包括的な理解を提供します。これは大きなプロジェクトであり、挑戦に満ちていますが、このような努力を通じて、ポリカを正しく理解し、ポリカに詳しくない人々がポリカに関する知識を簡単かつ迅速に掌握できるようにしたいと考えています。*今日はこのコーナーの第 148 号であり、この記事は、Parity のコア開発者であるキアン・パイマニがポリカの最新の JAM プロトコルを技術的な観点から解説し、JAM がポリカエコシステムにどのような新たなスケーラビリティをもたらすかをより良く理解するのを助けるものです。この記事は筆者の一人称の視点で書かれています。
以下は、Polkadot 1、Polkadot 2 がどのように JAM に発展したかの詳細な説明です。(詳細については**を参照してください。)本記事は技術者向けで、特にポロカに詳しくないがブロックチェーンシステムにある程度理解がある技術者や、他のエコシステム関連技術に詳しい読者を対象としています。
私は、JAMのホワイトペーパーを読む前に、この記事を読むことが良い準備だと思います。(詳細はこちらをご覧ください:**)
背景
本文では、読者が以下の概念に精通していることを前提としています:
巻頭言:Polkadot1
まず、私がPolkadot1で最も革新的だと思う特徴を振り返りましょう。
社会的なレベル:
技術レベル:
「異様シャーディング」に関する詳細情報については、関連セクションを参照してください。
シャーディング実行:重要ポイント
現在、私たちは、他のLayer2「ブロックチェーン」ネットワークをホストするLayer1ネットワークについて議論しており、これはポロカとイーサリアムのようなものです。したがって、Layer2とパラチェーンという用語は互換的に使用できます。
ブロックチェーンの拡張性の核心的な問題は、Proof-of-Stakeの暗号経済性を利用して、あるバリデータのグループが信頼できるコードの実行を保証できることです。デフォルトでは、これらのバリデータはお互いのすべての仕事を再実行する必要があります。したがって、すべてのバリデータに常にすべてを再実行するように強制する限り、システム全体はスケーラブルではありません。
上述の絶対再実行原則が変わらない限り、このモデルにバリデータの数を増やしても、システムのスループットは実際には向上しません。
上記は、単一のブロックチェーン(シャーディングブロックチェーンとは対照的)の表示です。すべてのネットワークバリデータが入力(つまり、ブロック)を順番に処理します。
このようなシステムでは、Layer1がより多くのLayer2をホストする場合、すべてのバリデーターは現在、すべてのLayer2の作業を再実行する必要があります。明らかに、この方法はスケーラブルではありません。Optimistic Rollupsは、詐欺証明がされた場合にのみ再実行されるため、この問題を回避する方法の一つです。SNARKに基づくRollupsは、SNARK証明を検証するコストが生成するコストよりもはるかに低いことを利用して、この問題を回避するため、すべてのバリデーターがSNARK証明を検証できるようにします。詳細については、「付録:スケーラビリティスペースマップ」を参照してください。
シャーディングの簡単な解決策は、バリデータセットをより小さなサブセットに分割し、この小さなサブセットでLayer2ブロックを再実行させることです。この方法の問題は何ですか?私たちはネットワークの実行と経済の安全性にシャーディングを行っています。このようなLayer2のセキュリティはLayer1よりも低く、バリデータセットをさらに多くのシャーディングに分割すると、そのセキュリティはさらに低下します。
Optimistic Rollups とは異なり、再実行コストが常にかかることができないため、ポカはシャーディングを設計段階で考慮しており、一部のバリデータにLayer2ブロックを再実行させ、すべてのネットワーク参加者に十分な暗号経済証拠を提供し、Layer2ブロックの真正性を再実行時と同じくらい安全であることを証明します。これは、新しい(最近正式に発表された)ELVESメカニズムによって実現されています。(詳細はこちらを参照:)
要するに、ELVESは「疑いの目を持ったロールアップ」メカニズムと見なすことができます。複数のバリデータが他のバリデータに特定のLayer2ブロックが有効かどうかを積極的に問い合わせることで、そのLayer2ブロックの有効性を非常に高い確率で確認することができます。実際には、何らかの紛争が発生した場合、すぐに全てのバリデータ集合に参加を要請することになります。Polkadotの共同創設者であるRob Habermeierは、この点を詳しく説明した記事を書いています。(詳細はこちらを参照してください:)
ELVESにより、Polkadotは「シャーディング実行」と「共有セキュリティ」という以前は相反すると考えられていた2つの特性を同時に備えることができるようになりました。これはPolkadot1がスケーラビリティの面での主要な技術的成果です。
現在、引き続き「CORE」比較について話し合いましょう。
シャーディングを実行するブロックチェーンは、CPUと非常に似ています。CPUには複数の並列実行命令があるコアがあるように、PolkadotはLayer2ブロックを並列処理できます。これがPolkadot上のLayer2が「パラチェーン」と呼ばれる理由であり、より小さなバリデータのサブセットによって単一のLayer2ブロックが再実行される環境は「コア」と呼ばれます。各コアは「協調するバリデータのグループ」として抽象化できます。
単一のブロックチェーンを、任意の時間範囲で1つのブロックのみ摂取するものと考えることができますが、ポリカは各時間範囲で1つのリレーチェーンブロックと各コアの1つのパラレルチェーンブロックを摂取します。
異質性
これまで、私たちは拡張性とポリカが提供するシャーディングの実行について話しました。注目すべきは、ポリカの各シャーディングが実際にはまったく異なるアプリケーションであるということです。これは、バイトコードに格納されたメタプロトコルを使用して実現されます。つまり、ブロックチェーン自体の状態にバイトコードとしてブロックチェーンの定義を格納するプロトコルです。Polkadot 1.0では、WASMが優先バイトコードとして使用され、JAMではPVM/RISC-Vが採用されました。
要するに、これがポーカが異種分散型ブロックチェーンと呼ばれる理由です。(詳細はこちらを参照してください:)各Layer2はまったく異なるアプリケーションです。
ポルカドット2
Polkadot2 の重要な部分は、コアの使用をより柔軟にすることです。元のポカモデルでは、コアのリース期間は6ヶ月から2年までで、資源豊富な企業には適していますが、小さなチームには適していません。ポカのコアは、「アジャイルコアタイム」と呼ばれる、より柔軟な方法で使用できる特性を持っています(詳細はこちらを参照してください:)。このモードでは、ポカのコアのリース期間は1ブロックまで短くすることも、1ヶ月まで長くすることもでき、長期的なリースを希望するユーザーに価格上限の保証を提供します。
Polkadot 2 の他の特徴は、私たちが議論している過程で徐々に明らかになっているため、ここでは余分な説明は必要ありません。
核心内部与オンチェーン操作
JAMを理解するためには、まずLayer2ブロックがPolkadotコアに入ると何が起こるかを理解する必要があります。
以下は大幅に簡略化されています。
振り返ってみると、コアは主に一連のバリデータから構成されています。したがって、「データがコアに送信された」と言うと、実際にはこのバリデータグループにデータが渡されることを意味しています。
Layer2ブロックとその一部の状態がコアに送信されます。これらのデータには、Layer2ブロックを実行するために必要なすべての情報が含まれています。
コア内の一部の検証者は、Layer2ブロックを再実行し、コンセンサスに関連するタスクを続行します。
2.核心バリデータは、他のバリデータ(コア外のバリデータ)に必要なデータを再度提供します。他のバリデータは、ELVESのルールに従って、このLayer2ブロックを再実行するかどうかを決定し、この操作を完了するためにこれらのデータが必要です。
注意してください。これまでのすべての操作は、ポカのメインブロックおよび状態遷移関数の外で行われています。すべてはコア内部およびデータの利用可能性層で起こります。
上記の内容から、私たちはポロカが実行しているいくつかの操作を探ることができます:
まず、ステップ1から、Polkadotには従来のブロックチェーンの状態遷移関数とは異なる新しいタイプの実行があると結論付けることができます。 通常、ネットワーク内のすべてのバリデータが特定のジョブを実行すると、メインブロックチェーンの状態が更新されます。 これをオンチェーン操作と呼び、ステップ3で行います。 ただし、コア内部 (ステップ 1) で何が起こるかは異なります。 私たちは、この新しいタイプのブロックチェーンコンピューティングをインコアコンピューティングと呼んでいます。
次に、2番目のポイントから、ポロカはネイティブのデータ可用性(Data-Availability、以下DA)レイヤーを提供し、Layer2は自動的にそれを使用して一定期間内に実行証拠を利用できるようにしています。ただし、DAレイヤーに公開できるデータブロックは固定されており、常にLayer2ブロックの再実行に必要な証拠です。さらに、パラチェーンのコードはDAレイヤーデータを読み取りません。
上記の内容を理解することは、JAMを理解する基礎です。以下にまとめます:
ジャム
前の部分を理解することで、JAMの紹介にスムーズに移行できます。
JAMは、波卡に触発されて設計された新しいプロトコルであり、完全に互換性があり、ポルカドットのリレーチェーンを置き換え、コアの使用を完全に分散化し制限なくします。
JAMはPolkadot2上に構築され、波卡のコアをよりアクセスしやすくすることを目指していますが、方法はagile-coretimeよりも柔軟で制約がありません。
これは、ブロックチェーン上での実行、コア内での実行、およびDAレイヤーの3つの主要な原始的な概念を開発者に公開することによって主に実現されます。
言い換えれば、JAMでは、開発者は次のようなものに触れることができます:
これはJAMターゲットの基本的な説明です。言うまでもなく、ここでは多くの簡略化が行われ、そしてプロトコルはまだ変化する可能性があります。
この基本的な理解を持っていると、次のセクションでJAMの詳細をさらに探ることができます。
1 サービスと作業項目
JAMの背景には、以前はレイヤー2 /パラチェーンと呼ばれていたものが「サービス(Service)」と呼ばれるようになり、以前はブロック/トランザクションと呼ばれていたものが「ワークアイテム(Work-Item)」または「ワークパッケージ(Work-Package)」と呼ばれるようになりました。具体的には、ワークアイテムは特定のサービスに属し、ワークパッケージはワークアイテムの集合です。これらの用語は意図的に汎用性が高く設計されており、ブロックチェーン/Layer2を超えるさまざまなユースケースをカバーしています。
3つのエントリポイントで構成されるサービスがあります。そのうちの2つは、fn refine()とfn accumulate()です。前者は、サービスがコア内で実行される内容を記述し、後者はサービスがオンチェーンで実行される内容を記述します。
最後に、2つのエントリーポイントの名前も、プロトコルがJAM(Join Accumulate Machine)と呼ばれる理由です。Joinはfn refine()を指し、すべてのPolkadotコアが異なるサービスの大量の作業を並列処理するときに、この段階を指します。データはフィルタリングされた後、次の段階に進みます。Accumulateは、上記のすべての結果が主JAMステータスに蓄積されるプロセスを指し、つまりオンチェーンの実行部分を指します。
ワークアイテムは、コア内またはオンチェーンで実行するコードを正確に指定し、分散データレイクからの読み取り/書き込みの方法/可否/場所を指定できます。
2 セミコンシステント
XCM(Polkadotが選んだパラチェーン通信言語)に関する現在の情報を見ると、すべての通信が非同期であることがわかります。(詳細はこちらを参照してください:)つまり、メッセージを送信した後、その応答を待つことはできません。
非同期性はシステムの一貫性の欠如を示すものであり、永久シャーディングシステム(例:Polkadot 1、Polkadot 2、および現在のETH Layer2エコシステム)の主要な欠点です。
然而、灰皮書の第2.4節で述べられているように、すべてのテナントに常に同期された完全に一貫したシステムは、普遍性、アクセス可能性、または柔軟性を犠牲にすることなく、ある程度までしか上昇できないことがあります。(詳細はこちら:)
同期≈一貫性||非同期≈の不整合
これは JAM が際立つ別の分野でもあります:JAM はさまざまな特性を導入することで、新しい中間状態である半一貫性システムを実現しています。このシステムでは、頻繁に通信するサブシステムがお互いに一貫した環境を作成する機会があり、システム全体を一貫させることを強制しません。これは、グレーペーパーの著者である博士の Gavin Wood 氏のインタビューで最もよく説明されています:(詳細はこちらを参照:_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ)
もう一つの理解方法は、ポルカ/JAMをシャーディングシステムと見なすことであり、これらのシャーディングの境界は流動的であり、かつ動的に決定されるものです。
ポカは常にシャーディングであり、完全に異質です。
現在、それはシャーディング、異質性によって分かれ、そしてこれらのシャーディングの境界は柔軟に決定されることができ、Gavin Woodがツイッターで言うように、「半一貫性」システムです。(詳細はこちらを参照:_src=twsrc%5Etfw、)
これを可能にする機能には、01928374656574839201が含まれています。
無状態で並列なコア内での実行にアクセスし、異なるサービスは同じコア内で特定のブロックにある他のサービスと同期してインタラクションでき、またオンチェーンで実行され、サービスはすべてのコアを超えたすべてのサービスの結果にアクセスできます。
JAMは特定のサービススケジュールを強制的に実行しません。頻繁に通信するサービスは、そのオーソライザに経済的なインセンティブを提供することができ、これらの頻繁に通信するサービスを含むジョブパッケージを作成します。これにより、これらのサービスは同じコア内で実行され、相互間の通信は同期環境で行われるかのようになります。
さらに、JAMサービスはDAレイヤーにアクセスし、一時的ですが非常に安価なデータレイヤーとして使用できます。データがDAに配置されると、最終的にすべてのコアに伝播しますが、同じコア内ではすぐに使用できます。したがって、JAMサービスは自分自身を連続するブロックで同じコアにスケジュールすることにより、より高いデータアクセスレベルを享受できます。
注意すべきは、上記の内容はJAMでは可能ですが、プロトコル層で強制されていないことです。したがって、理論的にはいくつかのインターフェースが非同期である可能性がありますが、巧妙な抽象化とインセンティブ措置により、実際には同期的に表現されることができます。次のセクションで議論するCorePlayは、このような例です。
3コアプレイ
本セクションでは、JAM環境での実験的な考えであるCorePlayについて説明しており、これは新しいスマートコントラクトプログラミングモデルとして記述することができます。本文執筆時点では、CorePlayはまだ詳細に説明されておらず、概念のままです。
CorePlayを理解するためには、まずJAMが選んだ仮想マシンであるPVMを紹介する必要があります。
4 PVM
PVMは、JAMとCorePlayの重要な詳細です。PVMの低レベルの詳細は、この記事の範囲を超えていますので、ドメインの専門家のグレーペーパーを参照することをお勧めします。ただし、この記事のニーズに応えるために、PVMのいくつかの特性について説明します。
*効率的な計量
後者はCorePlayにとって特に重要です。
CorePlayは、JAMを使用した柔軟なプリミティブを使用して、同期可能でスケーラブルなスマートコントラクト環境を作成する例です。CorePlayは、アクターベースのスマートコントラクトを直接JAMコアにデプロイすることをお勧めし、同期プログラミングインターフェースを利用して通常のfn main()と同様にコーディングし、let_result=other_coreplay_actor(data).await?を介して通信します。other_coreplay_actorが同じJAMブロック上のコアにある場合、この呼び出しは同期的に行われます。他のコア上にある場合、アクターは一時停止し、後続のJAMブロックで再開されます。これは、JAMサービスとその柔軟なスケジューリング、およびPVMの特性によって可能になるものです。
5 CoreChainsサービス
最後に、JAMがPolkadotと完全互換性がある主な理由をまとめましょう。Polkadotの主要な製品は、アジャイルなコア時間方式で動作するパラチェーン(Parachains)であり、この製品はJAMでも引き継がれています。
JAMで最初に展開されたサービスはおそらくCoreChainsまたはParachainsと呼ばれるでしょう。このサービスは既存のPolkadot-2スタイルのparachainsをJAM上で実行することを可能にします。
さらにサービスを展開するにはJAMに展開し、既存のCoreChainsサービスと通信することができますが、Polkadotの既存製品は引き続き強力であり、既存のパラチェーンチームに新たな扉を開くだけです。01928374656574839201
附录:データシャーディング
この記事のほとんどは、シャーディングの実行に関する観点から拡張性について検討しています。同じ問題をデータの観点から検討することもできます。興味深いことに、これは前述の半一貫性の場合と似ています:原則として、完全に一致するシステムがより優れていますが、拡張できません。完全に一致しないシステムは拡張可能ですが、理想的ではありません。代わりに、JAMは半一貫性モデルを使用して新しい可能性を提案しています。
完全一致システム:これは、完全に同期されたスマートコントラクトプラットフォーム、例えばソラナやイーサリアムのレイヤー1にのみ展開される勇敢なプラットフォームで見られます。すべてのアプリケーションデータはオンチェーンに格納され、すべての他のアプリケーションに簡単にアクセスできます。これはプログラム化された完璧な特性ですが、拡張性に欠けます。
不一致系统:アプリケーションデータはLayer1の外部および異なる、分離されたシャーディングに保存されています。非常にスケーラブルですが、組み合わせ性能が低いです。PolkadotやEthereumのRollupモデルがこのケースに該当します。
JAMは、上記の2つの機能を提供するだけでなく、開発者が任意のデータをJAM DAレイヤーに公開することを可能にし、ある種のオンチェーンデータとオフチェーンデータの中間地帯となります。DAレイヤーを利用した新しいアプリケーションデータのほとんどを書き込み、JAMの状態に絶対に重要なデータだけを永続化することができます。
附录:スケーラビリティスペースマップ
このセクションでは、ブロックチェーンのスケーラビリティ領域に対する私たちの見解を再解釈しています。これはホワイトペーパーでも説明されており、ここではより簡潔なバージョンが提供されています。
ブロックチェーンの拡張性は、従来の分散システムで使用されている方法に大きく従っています:スケーリングアップ(垂直)およびスケーリングアウト(水平)
向上拡張は、ソラナなどのプラットフォームで行われる作業です。コードとハードウェアを最適化して、最大のスループットを実現します。
拡張は、イーサリアムとポリカの採用する戦略であり、各人の作業量を減らすことです。従来の分散システムでは、これはより多くの複製マシンを追加することによって実現されます。ブロックチェーンでは、「コンピュータ」はネットワーク全体のバリデータの集合です。これらの間で作業を分配する(ELVESが行うように)か、楽観的に彼らの責任を減らす(楽観的ロールアップが行うように)ことにより、バリデータの集合全体の作業負荷を減らし、システムの拡張を実現します。
ブロックチェーンでは、アウトバウンドエクスパンションは「すべての操作を実行する必要のあるマシンの数を減らす」というようなものです。
まとめると、以下のとおりです:
付録:同じハードウェア、カーネルの更新
本セクションは、Sub02023でRob Habermeierが提供した比喩に基づいており、ポカ:カーネル/ユーザーランド|Sub02023-YouTube(詳細についてはこちらを参照してください:)、JAMをポカのアップグレードとして示しています:同じハードウェア上でのカーネルの更新。
典型的なコンピュータでは、スタック全体を3つの部分に分割することができます:
1.ハードウェア
2.カーネル
3.ユーザースペース
ポカでは、ハードウェア、つまり計算とデータの可用性を提供することが常にコアであり、前述のように。
ポルカでは、カーネルは実際には[9]これまでに2つのパートが含まれています:
1.パラチェーン(パラチェーン)プロトコル:一种意见化、固定的使用核心的方式。
これらの両方はポカのリレーチェーン(Relay Chain)に存在しています。
ユーザースペースアプリケーションは、パラチェーンのインスタンス、それらのネイティブトークン、およびそれらの上に構築された他のコンテンツです。
このプロセスを次のように可視化できます:
波卡は常に、より多くのコア機能をパラチェーンという特定のユーザーに移すことを考えてきました。これが Minimal Relay RFC が達成しようとしている目標です。(詳細はこちらを参照してください:)
これは、ポカのリレーチェーンが提供するパラチェーンプロトコルのみを処理することを意味し、ある程度、カーネルスペースを縮小することを意味します。
一旦このアーキテクチャが実装されると、JAM マイグレーションのビジュアライゼーションがより容易になります。JAM はポカのカーネルスペースを大幅に縮小し、より汎用性を持たせます。さらに、Parachains プロトコルは、同じコア(ハードウェア)とカーネル(JAM)でアプリケーションを書くことができる数少ない方法の1つであるため、ユーザースペースに移動します。
これは、JAMが単なるポロカのリレーチェーンの代替品であり、パラチェーンの代替品でない理由を再度説明しています。
言い換えれば、JAMの移行はカーネルのアップグレードと見なすことができます。基本的なハードウェアは変わらず、古いカーネルのほとんどの内容がユーザースペースに移動され、システムが簡素化されます。
この記事の議論に参加したい場合は、フォーラムで意見を投稿してください。
フォーラムのディスカッションに参加する方法については、当社が発行したPolkadotフォーラムの使用ガイドを参照してください:
「ポロカの議論に参加する方法:ポロカ公式フォーラムの使用ガイド」