DFINITYは2020年7月にショートビデオソーシャルソフトウェア「CanCan」のオープンソース版をリリースしましたが、これはWeb 2.0のDouyinに対して簡単にベンチマークすることができます。 CanCanはDFINITYのプログラミング言語「Motoko」をベースにしており、コードは1,000行未満です。 これは、DouyinやFacebookの何千万行ものコードと比較して驚くべきものと言えます。 同時に、CanCanのコードはオープンソースであり、製品の所有権は中央集権的な機関に属していません。 同年10月1日、DFINITYはガバナンスシステムとトークン経済モデルを発表し、プロジェクトの評価額は一時95億ドルに達し、トップ5にランクインしました。 同年12月末には、銅から水銀への5つのネットワークのマイルストーン進化が完了しました。 DFINITY財団の創設者兼チーフサイエンティストであるドミニク・ウィリアムズ氏は、「2020 FAT Value Era Summit Forum and Awards Ceremony」で、インターネットコンピューターはブロックチェーンの3番目の大きなイノベーションであると述べました。
要素技術に特化したDFINITYは、Web3を本当に実現できるのか。
推奨:市場は強気と弱気であり、ウクライナの状況に遭遇します、ここをクリックしてPANewsグループに参加してウォームアップしてください
原題:DFINITYの新しいホワイトペーパーの解釈、潜在的な株式の公開チェーン Web3.0をつなぐ時代の基盤技術とは?
著者: TinTinLand
1
鉛
2022年2月初旬、DFINITYエコシステムに基づいて開発された最初のプライベートメールDAppであるDmailは、Amino Capitalから戦略的投資を受けました。 Dmailは従来のメールボックスとの間でメールを送受信できることが報告されており、従来のメールボックスと比較して、ブロックチェーン属性を持つDmailは、情報の暗号化送信とメールボックス名のNFTも実現できます。 これは、Web3.0時代のコミュニケーションソフトウェアの準備であり、「デジタルID」という形で分散型WebサイトやDAppsへの入り口として機能します。 私が聞きたいのは、なぜDmailがDfinityを選んだのかということです。
ブロックチェーンのパブリックチェーンと比較すると、Dfinityは何度も登場していません。 ちょっとした火花が散った時にDeFiの火事はなく、「NFT」の初年度に席を獲得することもありませんでした。 しかし、Dmailのような人が、Web 3.0の具体的な実装がどのようなものになるのかを垣間見ることは珍しくありません。
DFINITYは2020年7月にショートビデオソーシャルソフトウェア「CanCan」のオープンソース版をリリースしましたが、これはWeb 2.0のDouyinに対して簡単にベンチマークすることができます。 CanCanはDFINITYのプログラミング言語「Motoko」をベースにしており、コードは1,000行未満です。 これは、DouyinやFacebookの何千万行ものコードと比較して驚くべきものと言えます。 同時に、CanCanのコードはオープンソースであり、製品の所有権は中央集権的な機関に属していません。 同年10月1日、DFINITYはガバナンスシステムとトークン経済モデルを発表し、プロジェクトの評価額は一時95億ドルに達し、トップ5にランクインしました。 同年12月末には、銅から水銀への5つのネットワークのマイルストーン進化が完了しました。 DFINITY財団の創設者兼チーフサイエンティストであるドミニク・ウィリアムズ氏は、「2020 FAT Value Era Summit Forum and Awards Ceremony」で、インターネットコンピューターはブロックチェーンの3番目の大きなイノベーションであると述べました。
この記事では、DFINITYのホワイトペーパーの原文を、公式説明の最低ロジックから解釈して、DFINITYがテクノロジーから出発し、インターネットのビッグテックを打ち破り、さまざまなWeb2.0ソフトウェアが自律ソフトウェアと分散型ガバナンスを使用してオープンソースビジネスの相乗効果を実現し、Web3.0を真に実現する方法を確認します。 ブロックチェーン業界の経験がない読者は、この記事を読むときに読書しきい値があるかもしれませんが、以下で発生する質問にコメントすることも大歓迎です。
2
概要
ブロックチェーンの歴史と現在のプロセスを通じて、BTCは分散型マネーの時代をもたらし、ETHはオペレーティングシステムの分野を表し、Filecoinはストレージを表し、DFINITYはコンピューティング分野の革新とWeb3.0の実装を表しています。 Internet Computer(以下、IC)はメインネットワークであり、分散型パブリックネットワークの開発を目的としたレイヤー1プロトコルであり、DFINITYはオープンな仮想ブロックチェーンコンピューターおよびテクノロジーであり、イーサリアムエコシステムを幅広いビジネスアプリケーションシナリオに拡張します。 この記事では、ホワイトペーパーの正式用語である「インターネットコンピューター」を使用して、現在の通信シナリオで一般的に使用されている「DFINITY」チェーンを指します。 このセクションでは、主にいくつかのICに関連する専門用語と、他のパブリックチェーンと比較した技術と実装の違い、または技術と機能の輝かしい点について説明します。 ICは、スケーラビリティ、分散化、セキュリティを組み合わせた新しい試みと言えます。
2.1 コンセンサスプロトコル
コンセンサスプロトコルの観点からICと他のいくつかの主要なパブリックチェーンを見ると、ICはハイブリッドモデルのDAO制御ネットワークを採用しており、許可型プロトコルの効率性を持ちながら、分散型PoSプロトコルの多くの利点を提供します。 ビットコイン、イーサリアム、およびAlgorandコンセンサスプロトコルはブロックチェーンベースであり、プルーフオブワーク(PoW)またはプルーフオブステーク(POS)のいずれかを使用します。 これらのプロトコルは完全に分散化されていますが、許可型プロトコルよりも効率が低くなります。
DAOは、各サブネットの許可されたコンセンサスプロトコルによって運営され、DAOは、ノードのコピーを提供できるエンティティを決定し、ネットワークを構成し、公開鍵基盤を提供し、ノードのコピーが展開されるプロトコルのバージョンを制御します。 ICのDAOはNetwork Nervous System(NNS)と呼ばれ、Posプロトコルに基づいており、関連する決定はすべてコミュニティメンバーによって決定され、コミュニティメンバーの投票権はNNSに出資するICネイティブガバナンストークン(ICP)の数によって決定されます。 この PoS ベースのガバナンス メカニズムにより、新しいサブネットを作成したり、既存のサブネットからノードのレプリカを追加または削除したり、ソフトウェア更新プログラムを展開したり、IC にその他の調整を行ったりできます。
この観点から、DFINITYがICを複製されたステートマシンのネットワークと呼ぶ理由も理解できます。 他のステートマシンと同様に、特定のサブネット上で実行され、そのメンバーシップは上記と同じPoSベースのガバナンスシステムによって決定されます。 同時に、レジストリと呼ばれるデータベースが維持され、どのノードレプリカがどのサブネットに属しているか、ノードレプリカの公開鍵などが記録されます。 したがって、DAO制御ネットワークは分散型コンセンサスプロトコルとして機能し、ICが効果的なコンセンサスを得ることを可能にしますが、同時に、DAOの運用メカニズムにより、ICは分散化の既存の利点も保持します。
ICのコンセンサスプロトコルは、NNSが保持するレジストリなどの公開鍵暗号を使用して、公開鍵をノードレプリカとサブネットにバインドして全体を形成する(チェーンキー暗号と呼ばれる)が、ICはコンセンサスプロトコルとレプリケーションステートマシンを実行するプロトコルの通信モデルも想定しており、ビザンチン障害に対処するために、より実現可能で堅牢な非同期モデル(送信されたメッセージに対して、敵対者は任意のメッセージの配信を任意の時間遅らせることができるため、メッセージの配信に時間制限はありません)を採用することを望んでいます。 しかし、現在のところ、非同期モデルで実際に実現可能なコンセンサスモデルは知られていないため、本稿では、以下のICアーキテクチャの解釈において、この現実世界の状況におけるICへの技術的アプローチについてより詳細に説明します。
2.2 チェーンキー暗号化
前述のように、ICのコンセンサスプロトコルは公開鍵暗号(チェーンキー暗号)も使用しており、チェーン鍵暗号を構成するいくつかの主要部分があります。 チェーンキー暗号化の最初のコンポーネントは閾値署名です:閾値署名は、サブネットが共通の検証署名鍵を持つことを可能にする成熟した暗号技術であり、対応する署名秘密鍵は複数のコピーに分割され、サブネット内のノードに配布されますが、割り当ては不良ノードが署名を偽造できないことを保証し、誠実なノードが所有する秘密鍵フラグメントは、サブネットがICの原則とプロトコルに準拠する署名を生成することを可能にします。
これらの閾値署名の主な用途は、あるサブネットの個々の出力を別のサブネットまたは外部ユーザによって検証でき、検証は、変更されたサブネット(最初のサブネット)の公開検証署名鍵を使用して電子署名の実装を検証するだけで実行できることです。
ご覧のとおり、ICにはこれらのスレッショルドシグネチャの他の多くのアプリケーションがあります。 1 つは、サブネット内のノードの各コピーを、予測不可能な疑似乱数(このようなしきい値シグニチャから派生)からアクセスできるようにするために使用する必要があります。 これは、コンセンサス層で使用されるランダムビーコンと、実行層で使用されるランダムテープの基礎となります。
閾値署名を安全に展開するために、ICは革新的な分散鍵生成(DKG)プロトコルを採用して公開署名検証鍵を構築し、各ノードレプリカに前述のビザンチン障害および非同期モデルに対応する署名秘密鍵のフラグメントを提供します。
2.3 ICP
ICP には次の機能があります。
NNSステーキング、すなわちネットワークガバナンスの促進。
ICPは、NNSに出資して議決権を獲得し、ICネットワークを管理するDAOに参加するために使用できます。 NNSにトークンをステークし、NNSガバナンスに参加したユーザーは、投票報酬として新たに鋳造されたICPトークンも受け取ります。 報酬の数は、NNSによって確立され、実施されるポリシーによって決定されます。
サイクルを、つまり生産力として償還する。
ICPは、ICの使用料の支払いに使用されます。 より具体的には、ICPはサイクル(つまり、燃焼)と引き換えることができ、タンクやタンクの作成に使用されるリソース(ストレージ、CPU、および帯域幅)の支払いに使用できます。 サイクルに対するICPの比率はNNSによって決定されます。
ノードプロバイダーは、参加者に報酬として支払われます。
ICPは、ノードプロバイダー(ICを構成するノードのコピーをホストするために計算ノードを所有および運用するエンティティ)への支払いに使用されます。 NNSは定期的(現在は毎月)に、各ノードプロバイダーが受信し、アカウントにリリースする必要がある新しく作成されたICPを決定します。 NNSが策定・実施するポリシーによると、ICPの支払いは、ノードプロバイダーがICに信頼できるサービスを提供することを前提としています。
2.4 NNSの実行
前述したように、ICのレプリケーションステートマシンは任意のプログラムを実行することができます。 ICの基本的なコンピューティングユニットはタンクと呼ばれ、プロセスとほぼ同じ概念であり、プログラムとその状態(時間の経過とともに変化します)が含まれています。 タンクのプログラムは、スタックされた仮想マシンをベースにした2つのメカニズムの命令形式であるWebAssembly(以下、Wasm)でコーディングされています。 Wasm はオープンソースの標準であり、もともとは Web 上で高性能なアプリケーションを実現するために設計されましたが、汎用コンピューティングにも適しています。
このICは、タンク内でWasmプログラムを実行し、他のタンクや外部ユーザーと(メッセージングを介して)通信するためのランタイム環境を提供します。 原理的には Wasm にコンパイルする任意の言語で tank プログラムを書くことは可能ですが、前述の Motoko と呼ばれる言語は IC 操作のセマンティクスと非常に一致しており、IC で使用できます。
Motoko は、直交永続性 3 と非同期メッセージングのサポートが組み込まれた、厳密に型付けされたアクター 2 ベースのプログラミング プログラムです。 直交永続性とは、タンクによって維持されるメモリが自動的に永続化される(つまり、ファイルに書き込む必要がない)ことを意味します。 Motoko には、自動メモリ管理、ジェネリック、型推論、パターン マッチング、任意精度および固定精度の演算など、多くの生産性とセキュリティ機能があります。
このICは、Motokoに加えて、Candidと呼ばれるメッセージインターフェイス定義言語とデータ形式を提供し、固定型、高級言語、および言語間の相互運用性に使用されます。 これにより、2 台の戦車は、異なる高級言語で書かれている場合でも、互いに簡単に通信できます。 特定のプログラミング言語のタンク開発を完全にサポートするには、その言語の Wasm コンパイラに加えて、特定のランタイムサポートを提供する必要があります。 現在、このICはMotokoに加えて、Rustプログラミング言語でのタンク開発も完全にサポートしています。
その結果、ICはよりセキュアでクロス言語のプログラミング言語をサポートするようになり、これは開発者がICをより効果的かつ安全に作成するための重要な要素の1つです。
2.5 NNSの決定
DFINITYブロックチェーンネットワークでは、BNS(Blockchain Nervous System)はネットワークが運用するガバナンスシステムであり、ブロックチェーンネットワークで最も重要な構成要素の1つであり、自動的にシステムに入り、高い権限を持つことができます。 スーパーノードの役割を担います。 誰もが、いわゆるニューロンにICPをステークすることで、NNSのガバナンスに参加します。 ニューロン保有者は、サブネットのトポロジーやプロトコルなど、ICの変更方法を提案し、投票することができます。 Neuronsの議決権はPoSベースです。 直感的には、ICPがステークされればされるほど、ニューロンの投票権は大きくなります。 しかし、投票権はニューロンの他の特性にも依存し、例えば、より長い期間トークンを賭けることをいとわないニューロン保有者には、より大きな投票権が与えられます。
各提案には明確な投票期間があります。 投票期間の終了時に、提案に賛成票を投じた人の単純過半数と賛成票の数が、議決権総数の所定の定足数要件(現在は3%)を超えた場合、提案は採択されます。 それ以外の場合、提案は却下されました。 さらに、圧倒的多数(総投票数の半数以上)が提案に賛成または反対した場合、それに応じて提案は承認または拒否されます。
平たく言えば、BNSのガバナンスプロセスは、ニューロンの作成、提案、投票、実行の4つのフェーズに分かれています。
ニューロンの作成:前述のように、ブロックチェーンNeurosystemでは、ユーザーはICPを使用して投票ニューロンを作成できます。 誰でもニューロンを作ることができ、将来的には数万個のニューロンが作られ、アルゴリズムを介してコミュニティの意志を集合的に表現するようになるかもしれません。
提案:ニューロンを実行しているユーザーなら誰でもBNSで提案を行うことができ、BNSは提案の合理性と解決策を提供するかどうかに基づいて提案をレビューします。 プロポーザルを行うユーザーは、プロのレビュアーと投票に参加したニューロンに支払う料金と、プロポーザルが採択された後にニューロンに返還されるプロポーザルデポジットの2つの料金を支払う必要があり、この金額を設定することで、質の高いプロポーザルを奨励することができます。
投票:提案者に加えて、他のユーザーも投票フェーズ中にニューロンにトークンをステークし、積極的に投票するか、投票に従うかを選択できるようにする必要があります。 自主判断能力のある利用者は能動的に投票することも選択でき、提案を正確に判断できない一部の利用者には、フォロー投票のシナリオが適している。 投票時間が終了すると、BNSはニューラルネットワークの結果を収集し、提案が承認されるかどうかを自動的に判断します。
実装:今、実行レイヤーのICコンセンサスの解釈がありますが、BNSガバナンスシステムの実装の具体的な実装は何ですか? パッシブ実行の提案には、主にニューロンのステーキングパラメータなど、DFINITY上のスマートコントラクトのパラメータ変更が含まれます。 更新されたプロポーザルパラメータは、BNSスマートコントラクトデータベースに受動的に書き込まれ、後で実行されると直接有効になります。 例えば、BNSの規制レベルを含むなど、提案がBNSスマートコントラクトの制御を超えている場合、DFINITYの「コードは法律である」部分を上書きするために人間の積極的な執行が必要になる特別なケースがあります。 例えば、システムコードの脆弱性を修正したり、BNS規制に違反するスマートコントラクトやニューロンを凍結させたりします。 アクティブな実行プロセスは、EVM に追加された特別なオペコードを呼び出すことによって実装されます。 このステップの操作は、現在のブロックチェーンの世界における現在の「コードは法律」であり、「コードがすべて」ではなく、より人道的で合理的です。 人間の本性の観点から見ると、コードが意思決定を行えないシナリオをカバーすることは、より効果的でインテリジェントなガバナンスをもたらすことができ、ある程度、それは「コンセンサス」の根底にある意図にも真に触れます。
3
アーキテクチャの解釈
ICプロトコルは、下図に示すように、P2P層、コンセンサス層、ルーティング層、実行層の4つの層で構成されています。 本稿では、4層アーキテクチャの役割と機能についてのみ解釈し、アーキテクチャ全体の構成を分析する。 特定のレイヤーの特定の技術的実装の詳細については、元の DFINITY ホワイト ペーパーを参照してください。
3.1 P2Pレイヤー
P2P層は、メッセージの取得と順序付けのためのインターネットコンピュータプロトコル層の層として機能し、そのタスクは、サブネットのノードのコピーでプロトコルメッセージを配信することです。
プロトコル メッセージには、コンセンサスを得るために使用されるメッセージと、外部ユーザーによって開始された入力メッセージの 2 種類があります。
P2P層は基本的に「ベストエフォート」のブロードキャストチャネルを提供する、つまり、誠実なノードコピーがメッセージをブロードキャストした場合、そのメッセージは最終的にサブネット内のすべての都市ノードによって受信されることが理解できます。
P2Pレイヤーは、次の目的で設計されています。
リソースが限られています。 すべてのアルゴリズムは、限られたリソース(メモリ、帯域幅、CPU)で実行されます。
優先権。 タイプ、サイズ、ターンなどの特定の属性に応じて、異なるメッセージが異なる優先度で並べ替えられます。 また、これらの優先事項のルールは、時間の経過とともに変更される可能性があります。
高効率。 低遅延よりも高スループットの方が重要です。 高いスループットは、DFINITYが他のパブリックチェーンよりも下から効率的である理由でもあります。
アンチDOS / SPAM。 ノードに障害が発生しても、正規のノードレプリカ間の通信には影響しません。
3.2 コンセンサスレイヤー
3.2.1 コンセンサスレイヤーの概要
ICコンセンサス層のタスクは、ノードのすべてのレプリカが入力メッセージを同じ順序で処理するように、入力メッセージをソートすることです。 文献には、この問題に対処する多くのプロトコルがあります。 ICは新しいコンセンサスプロトコルを採用しており、この記事では一般的な言葉で説明します。 安全なコンセンサスプロトコルは、大まかに次の2つの属性を確保する必要があります。
セキュリティ: ノードのすべてのレプリカは、事実上、同じ入力順序に同意します。
アクティブ: すべてのノード レプリカは、ステータスを 1 つずつ更新する必要があります。
ICコンセンサス層の設計目標は、個々の悪意のあるノードがある場合、パフォーマンスが柔軟に低下するという、実は理解しやすいものです。 多くのコンセンサスプロトコルと同様に、ICコンセンサスプロトコルはブロックチェーンベースです。 プロトコルが進行するにつれて、ジェネシスブロックをルートノードとするブロックツリーは成長し続けます。 各非ジェネシスブロックには、一連の入力と親ブロックのハッシュで構成されるペイロードが含まれています。
正規のレプリカは、チャンクツリーの一貫したビューを持つ: 各レプリカはチャンクツリーの異なるローカルビューを持つ場合がありますが、ノードのすべてのレプリカには同じチャンクツリーが表示されます。 さらに、プロトコルが進行するにつれて、ブロックツリーには常にブロックを確定するためのパスがあります。 繰り返しになりますが、誠実なノードレプリカは、このパスの一貫したビューを持っています:各ノードレプリカはパスの異なるローカルビューを持つかもしれませんが、すべてのノードレプリカは同じパスを参照します。 このパスに沿ったブロックの負荷の入力は、ICの実行層によって処理されるソートされた入力です。
コンセンサスプロトコルは、ノードのコピー内のメッセージを検証するために電子署名に依存しています。 これを実現するために、ノードの各コピーは、署名プロトコルの公開認証キーに関連付けられます。 ノードレプリカと公開鍵の相関関係は、NNSが管理するレジストリから取得できます。 これは、前述したICにおけるチェーンキー暗号の役割と役割とも一致しています。
3.2.2 前提条件
第II部で論じたように、ICは次のような仮説を提唱している。
サブネットには n 個のノードのレプリカが含まれ、最大で n 個の
障害が発生したノードレプリカは、任意の悪意のある動作(つまり、ビザンチン障害)を示す可能性があります。 通信は非同期であり、ノードレプリカ間のメッセージレイテンシーに事前の制限がない、つまり上記の非同期モデルを前提としています。 この時点で、メッセージングのスケジューリングは完全に敵対的である可能性があります。 この弱い通信の仮定の下では、ICコンセンサスプロトコルはセキュリティを確保できます。 しかし、アクティビティを確保するためには、特定の形式の部分同期、つまりネットワークが短い間隔で定期的に同期されたままであることを想定する必要があります。 この同期間隔では、未送信の情報はすべて、一定の時間制限δ内に送信されます。 制限時間δは事前にはわかりません(プロトコルは妥当な境界値を初期化しますが、制限時間が短すぎる場合は値を動的に調整し、制限値を増やします)。 ネットワークが非同期か部分同期かに関係なく、誠実なノードレプリカから別のノードレプリカに送信されたメッセージは最終的に配信されることを前提としています。
3.2.3 プロトコルの概要
多くのコンセンサスプロトコルと同様に、ICコンセンサスプロトコルはブロックチェーンベースです。 プロトコルが進行するにつれて、ジェネシスブロックをルートノードとするブロックツリー(例えば3.2.4を参照)は成長し続けます。 各非ジェネシスブロックには、一連の入力と親ブロックのハッシュで構成されるペイロードが含まれています。 正規のレプリカは、チャンクツリーの一貫したビューを持つ: 各レプリカはチャンクツリーの異なるローカルビューを持つ場合がありますが、ノードのすべてのレプリカには同じチャンクツリーが表示されます。 さらに、プロトコルが進行するにつれて、ブロックツリーには常にブロックを確定するためのパスがあります。 同様に、正直なノードレプリカにはこのパスの一貫したビューがあり、各ノードレプリカはパスの異なるローカルビューを持つ場合がありますが、すべてのノードレプリカには同じパスが表示されます。 このパスに沿ったブロックの負荷の入力は、前のセクションで解釈された実行レイヤーによって並べ替えられ、処理されています。
3.2.4 実例
下の画像は、ブロックツリーを示しています。 各ブロックには、ブロックの高さ(30、31、32、··· )とブロックジェネレータのランキングは、ブロックツリーの各ブロックが公証され、記号Nでマークされていることを示しています。 これは、各ブロックツリーの公証されたブロックが、異なるノードの少なくともn個のコピーの公証によってサポートされていることを意味します。 指定されたブロックの高さに複数の公証されたブロックが存在する可能性があることがわかります。 例えば、ブロック高さ32では、ランク1のブロックジェネレーターによって提案されたものとランク2で提案されたものの2つの公証されたブロックを見ることができ、ブロック高さ34でも同じことが起こります。 また、記号Fで識別されるように、高さ36のブロックも明示的に確認されていることがわかります。 これは、異なるノードのn-f個のコピーがブロックの最終確認をサポートしていることを意味し、これらのノードコピー(または少なくともこれらの正直なノードコピー)は他のブロックの公証をサポートしていないことを意味します。 ブロックが灰色で塗りつぶされているすべての祖先は、暗黙の最終確認を受けたと見なされます。
3.2.5 公平性
公平性はコンセンサスの基礎であるため、コンセンサスプロトコルのもう一つの重要な属性は公平性です。 普遍的な定義を設定するのではなく、生命の不変性が有用な公平性の特性を意味することを観察するだけです。 要約すると、不変性とは、基本的に、どのラウンドでも、マスターノードが正直でネットワークが同期されると、マスターノードによって提案されたブロックもファイナライズされることを意味します。 これが発生すると、誠実なマスターノードは、ブロックのロードで認識しているすべての入力を実際に含めます(ロードサイズのモジュール制限によって異なります)。 したがって、大まかに言えば、十分な数のノードコピーに伝播された入力は、妥当な時間内に最終的に確認されたブロックに含まれる可能性が高くなります。
3.3 ルーティング層
前述したように、ICの基本的な演算ユニットはタンクと呼ばれます。 このICは、タンク内でプログラムを実行し、他のタンクや外部ユーザーと(メッセージを介して)通信できる動作環境を提供します。 コンセンサス層は入力をブロックの負荷にパックし、ブロックがreddestによって確認されると、対応する負荷がメッセージルーティング層に渡され、実行環境によって処理されます。 次に、実行層は、レプリケーション ステート マシン内の対応するタンクの状態を更新し、出力をメッセージ ルーティング層に渡して処理します。
次の 2 種類の入力を区別する必要があります。
イングレス メッセージ: 外部ユーザーからのメッセージ。
クロスサブネット メッセージ: 他のサブネットのタンクからのメッセージ。
また、2種類の出力を区別することもできます。
イングレス メッセージ応答: イングレス メッセージへの応答 (外部ユーザーが取得できます)。
クロスサブネット メッセージ: 他のサブネット タンクに送信されるメッセージ。
コンセンサスからのロードが受信されると、それらのロードの入力は異なる入力キューに配置されます。 サブネットの下のタンク C ごとに、C へのイングレス メッセージ、C と通信するための個別のタンク C’、C から C’ へのクロスサブネット メッセージなど、複数の入力キューがあります。
各ラウンドで、実行レイヤーはこれらのキューからの入力の一部を消費し、対応するタンクのレプリケーション状態を更新し、出力を別のキューに配置します。 サブネットの下のタンクごとに、複数の出力キューがあり、通信するタンクごとに、C から C’ へのサブネット間メッセージ用のキューがあります。 メッセージのルーティング層は、メッセージ キュー内のメッセージを取得し、サブネット間トラフィックに配置して、実際にメッセージを他のサブネットに送信するクロスサブネット トランスポート プロトコルによって処理されます。
これらの出力キューに加えて、入力メッセージのヒストリカル・データ構造もあります。 入力メッセージがタンクによって処理されると、その入力メッセージへの応答がそのデータ構造に記録されます。 この時点で、イングレス メッセージを提供した外部ユーザーは、関連する応答を取得できます。 (注:入力履歴は、すべての入力メッセージの完全な履歴を保持するわけではありません)。
明確にしておかなければならない点が2つあり、まず、ノードレプリカの状態には「システム状態」だけでなく、タンクの状態も含まれます。 「システム状態」には、キュー、データフロー、および上記のイングレス履歴のデータ構造が含まれます。 その結果、メッセージ ルーティング層と実行層の両方が、サブネットのレプリカ状態の更新と維持に関与します。 この状態はすべて完全な確定性で更新され、すべてのノードがまったく同じ状態を維持する必要があります。
2つ目の注意点は、コンセンサス層がメッセージルーティング層と実行層に先行していること、つまり、コンセンサスブロックチェーンのフォークは、負荷が渡される前にすでに解決されているということです。 実際、コンセンサス層は早期の運用を可能にし、メッセージルーティング層と同じスケジュールである必要はありません。
ルーティング層の説明と説明により、コンセンサスプロトコルがメッセージルーティングを介してコンセンサスプロトコルとの間でどのように送受信され、実行層にどのように接続されているかをより明確に理解し、コンセンサスプロトコルの調整と一貫性を促進します。
3.4 実行層
実行環境は、入力キューの 1 つから取得され、タンクに送られる一度に 1 つの入力を処理し、入力とタンクの状態に応じて、実行環境はタンクの状態を更新し、出力キューにメッセージを追加で追加できます。 入力履歴を更新します (場合によっては、前の入力メッセージへの応答と共に)。 特定のターンで、実行環境は複数の入力を処理します。 スケジューラは、特定のターンに対してどの入力をどのような順序で実行するかを決定します。 スケジューラーについてあまり詳しく説明するのではなく、いくつかの目標を強調します。
それは決定論的でなければなりません、つまり、与えられたデータにのみ依存する必要があります。
ワークロードをタンク間で公平に分散する必要があります (ただし、待機時間ではなくスループットを最適化します)。
各ラウンドで完了した作業の数はサイクルで測定され、所定の数量に近い必要があります。
実行環境が処理しなければならないもう 1 つのタスクは、1 つのサブネットのタンクの 1 つが、他のサブネットが消費できるよりも速くサブネット間でメッセージを生成する状況です。 この状況に対応して、生産タンクを減速するための自主規制メカニズムを実装しました。 ランタイム環境で処理する必要があるリソース管理タスクとブックキーピング・タスクは他にも多数ありますが、これらのタスクはすべて決定論的に処理する必要があります。
4
チェーンキー暗号化
概要では、ICのコンセンサスプロトコルも公開鍵暗号技術であるチェーンキー暗号を使用しており、チェーンキー暗号の重要な部分がしきい値署名であることを説明します。 実際、チェーンキー暗号化には、ブロックチェーンベースのレプリケーションステートマシンを長期にわたって堅牢かつ安全に維持するために使用される複雑な一連の技術が含まれており、総称してチェーン進化技術として知られています。 各サブネットは、複数のラウンド (通常は約数百) を含むエポック内で動作します。 チェーン・エボリューション・テクノロジーにより、ガベージ・コレクション、ファスト・フォワード、サブネット・メンバーの変更、アクティブ・シークレット・フォワーディング、プロトコル・アップグレードなど、エポックごとに実行される基本的なメンテナンス・タスクの多くが可能になります。
連鎖進化技術の理解、すなわちICコンセンサスプロトコルセキュリティの技術的実装の理解。 チェーン・エボリューション・テクノロジーは、サマリー・ブロックとキャッチアップ・パッケージ(CUP)という2つの基本コンポーネントで構成されています。
4.1 サマリーブロック
各エポックの最初のブロックはダイジェストブロックです。 サマリー・ブロックには、さまざまなしきい値シグニチャー・スキームの鍵フラグメントを管理するために使用される特別なデータが含まれています。 しきい値署名スキームには、次の 2 つがあります。
f + 1/n のしきい値構造を持つシナリオでは、エポックごとに新しい署名キーが生成されます。
しきい値構造が n-f/n のシナリオでは、署名キーはエポックごとに 1 回再共有されます。
しきい値が低いシナリオはランダム ビーコンとランダム テープに使用され、しきい値が高いシナリオはサブネットのレプリケーション ステータスを確認するために使用されます。 DKGプロトコルでは、署名鍵ごとに一連の取引が必要であり、各ノードレプリカは、この一連の取引に基づいて署名鍵フラグメントを非対話的に取得できることを思い出してください。 繰り返しになりますが、NNS はサブネット メンバーを決定するレジストリを保持しています。 レジストリ (およびサブネット メンバー) は、時間の経過と共に変化します。 そのため、サブネットは、異なるタイミングで異なる目的で使用されるレジストリのバージョンに同意する必要があります。 この情報は、集計ブロックにも格納されます。
4.2 カップ
概要はさておき、キャッチアップパッケージ(CUP)について見てみましょう。 CUPについて詳しく説明する前に、まずランダムビーコンの詳細を指摘する必要があります:各ラウンドのランダムビーコンは、前のラウンドのランダムビーコンに依存します。 これはCUPの基本的な機能ではありませんが、CUPの設計に影響を与えます。 CUPは、前のエポックに関する情報を知らなくても、ノードがエポックの開始点で動作するために必要なすべてを含む特別な(ブロックチェーン上にない)メッセージです。 これには、次のデータフィールドが含まれています。
複製された状態全体の Merkel ハッシュ ツリーのルート (第 1.6 章の検証の各ラウンドの部分的な状態とは対照的)。
時代。
エポックの最初のラウンドのランダムビーコン。
上記のフィールドの (n - f)/n に対するサブネットのしきい値シグニチャ。
特定のエポックのCUPを生成するには、ノードレプリカは、エポックのダイジェストブロックがファイナライズされ、対応するラウンド状態が検証されるまで待つ必要があります。 前述したように、レプリケーション状態全体は、ハッシュ関数によってマークルツリーに処理する必要があります。 このプロセスを高速化するために使用される手法はたくさんありますが、コストは依然として大きいため、各エポックは一度しか処理されません。 CUPにはこのマークルツリーのルートのみが含まれているため、ノードレプリカがピアから必要な状態を抽出できるようにする状態同期サブプロトコルを使用します。 繰り返しになりますが、このプロセスをスピードアップするために多くのテクノロジーを使用してきましたが、それでもコストがかかります。 CUPには高しきい値のシグニチャを使用するため、どのエポックでも有効なCUPが1つだけ存在し、その状態を多くのピアから抽出できることを保証できます。
4.3 チェーン・エボリューション・テクノロジーの実装
ガベージコレクション:CUPには特定のエポックに関する情報が含まれているため、ノードの各コピーは、そのエポックより前に処理されたすべての入力と、それらの入力を順序付けたコンセンサスレイヤーメッセージを安全にパージできます。
早送り: サブネット内のノードのレプリカが同期ノードより大幅に遅れている場合 (長時間ダウンまたは切断されているため)、またはノードの新しいレプリカがサブネットに追加された場合、コンセンサス プロトコルを実行してその時点より前のすべての入力を処理することなく、最新のエポックの開始点にすばやく転送できます。 このノードのコピーは、最新のCUPを取得することで実行できます。 CUPに含まれるダイジェストブロックとランダムビーコン、および他のノードコピーからのコンセンサスメッセージ(まだクリアされていない)を使用して、ノードレプリカは、対応するエポックの開始点からコンセンサスプロトコルを前方に実行できます。 また、ノードは、状態同期サブプロトコルを使用して、対応するエポックの開始時にレプリケーション状態を取得することができるため、コンセンサス層によって生成された入力の処理を開始することもできます。
次の図は、早送りを示しています。 ここでは、エポックの開始点に追いつく必要があるノードレプリカ(たとえば)が101でCUPが必要であると仮定します。 このCUPには、ブロック高101の複製マークルツリーのルート、ブロック高101のサマリーブロック、およびブロック高101のランダムビーコンが含まれています。 ノードは、状態同期サブプロトコルを使用して、ブロック高さ 101 のすべてのレプリケーション ステータスをピアから取得し、CUP のマークル ツリーでこの状態を確認します。 この状態を取得した後、ノードコピーはプロトコルに参加し、ブロック高さが102、103などのブロック(およびその他のコンセンサス関連メッセージ)をピアから取得し、そのレプリケーション状態のコピーを更新できます。 ピアがより高いレベルでブロックを確認した場合、ノードのコピーは、ピアから取得したファイナライズされたブロックをできるだけ早く(実行レイヤーが許す限りの速さで)処理(および公証およびファイナライズ)します。
5
エピローグ
イーサリアムと同様に、DFINITYのビジョンは、前述のホワイトペーパーの部分的な解釈と技術的な説明を通じて、「世界のスーパーコンピューター」を構築することです。 このビジョンのもとで実現されるICは、実現する大きなチャンスを秘めています。
コンセンサスプロトコルのハイブリッドモデルDAO、高速ブロック生成と高スループットの技術革新、BNSニューロンシステムとそのエコロジカルガバナンススキームから、ICのビジョンを実現するための技術革新と技術的実現可能性を見ることができます。 法律である現在のイーサリアムコードとは異なり、ICコードガバナンスは、完璧なコードアーキテクチャを確立することを目標とするのではなく、システムがルールを迅速に調整できるようにすることを目的として、群衆の知恵の要素を基盤に追加します。 これは技術的な創造物であるだけでなく、輝く人間性でもあります。 ブロックチェーンの世界では、コンセンサスの確立、維持、修正は単に成文化されるものではなく、コアの本質は人であるべきです。 人間中心のグループ間の有効で公正なコンセンサスは、ブロックチェーン業界の中心であり、多くの分散型Dappsの魅力です。
本稿では、NNSの詳細、コンセンサス層上のサブネットの各ラウンドの認証ステータス、エントリメッセージのクエリと更新呼び出し、チェーンキー暗号における分散鍵配布、PVSSスキーム、基本プロトコルと再共有プロトコルなどについて説明するICホワイトペーパーの内容の一部を引用して解釈します。 ICの基盤となる技術をより包括的かつ詳細に理解したい開発者は、元のホワイトペーパーを読むことで、より詳細な説明と説明を得ることができます。