コントラクト・レジストリ

コントラクト・レジストリは、PoS コントラクトのリストとアクティブマネージャーを管理します。このコントラクトはシステムの基礎であり、すべてのコントラクトまたはユーザーが最新のコントラクト・リストを取得できるようにします。

コントラクト・レジストリは、コントラクトアドレスの更新をPoS管理コントラクトにプッシュします。コントラクト・レジストリは、PoSコントラクト・アップグレードのコアコンポーネントであり、レジストリ自体だけでなく、システム内の各コントラクトへの移行もできます。

ステーキング・コントラクト

ステーキング・コントラクトは、参加者がステーキングしたトークンを保持します。ステーキング・コントラクトは、参加者のステークが変更された場合、例えば、ステーキングまたはステーキング解除が起こった場合に、stakingContractHandler に通知します。

参照:Orbsのステーキング・コントラクトの高レベルの仕様

stakingContractHandler

StakingContractHandlerは、ステーキング・コントラクトを OrbsPoS コントラクト、およびコントラクト・レジストリによって管理される Orbs のコントラクトに接続します。

StakingContractHandlerは、追加のステーキングコントラクトを接続したり、必要に応じてステーキング・コントラクトアクションを残りのPoSコントラクトから分離したりするためのインフラストラクチャを提供します。

委任

委任コントラクトは、 Orbs の PoS の各参加者の委任データベースを管理します。委任コントラクトは、参加者に対して、選択したガーディアンと参加者の自己ステーク、および参加者に委任されたステークを保持します。

参加者の委任、自己ステーク、または委任されたステークが変更されるたびに、コントラクトは、それに応じて報酬を計算するステーキング・リワード契約に通知します。 さらに、委任コントラクトは、参加者の委任されたステークに変更があった場合に選挙コントラクトに通知し、選挙コントラクトからデリゲータの表記を隠します。

選挙

選挙コントラクトは、委任ントラクトを委員会、ガーディアン登録および認証ントラクトと結び付けます。さらに、選択コントラクトは、voteUnready と voteOut の両方の投票ロジックを実装し、ノードステートマシンの通知の readyForCommittee と readyToSynct を管理します。

委任コントラクトからの通知に応じて、選挙コントラクトは参加者の新しい有効なステーキング量を計算し、委員会コントラクトを更新します。 ガーディアンのreadyForCommitteeである委員会で、選挙コントラクトはガーディアンが登録されており、投票されていないことを検証し、委員会コントラクトに追加するよう要求します。もしガーディアンがvoteUnreadyとvoteOutを投票された場合、選挙コントラクトは委員会コントラクトにガーディアンを委員会から削除することを要求します。

委員会

委員会コントラクトは、現在の委員会の状態を管理します。委員会コントラクトは、現在の委員会メンバーとそのウエイトを保持します。選挙コントラクトからの有効なステーク変更通知に応じて、委員会コントラクトは委員会メンバーのウエイトを更新し、更新イベントを発行します。

委員会への参加要請に応じて、委員会のメンバーは候補者が参加する資格があることを確認します。候補者のウエイトが最もウエイトの少ない委員会のメンバーよりも高い場合、候補者は最小ウエイトのガーディアンに代わり委員会に参加します。委員会のメンバーリストまたはその認定が変更されると、連絡先は、退会および参加メンバーのステーキング・リワードおよびフィーアンドブートストラップ・コントラクトに通知して、報酬の状態を更新します。

ステーキング報酬

ステーキング報酬コントラクトは、PoS エコシステムの参加者のステーキング報酬の状態を管理します。ステーキング報酬アーキテクチャは、フレーミングプールで一般的なシェアあたりの報酬アーキテクチャに基づいています。コントラクトアーキテクチャは、グローバル割り当て、委員会のガーディアンがウエイトに基づいてシェアを受け取る、委任者がステークに基づいてガーディアンの報酬の一部を受け取るという 3 つのレベルに基づく Orbs の PoS アーキテクチャ用に設計されました。

ステーキング報酬コントラクトは、デリゲータのステークの更新とガーディアンの委員会メンバーの変更という2つのイベントで更新します。参加者は、ステーキング・コントラクトで得られたステーキング報酬を請求することができ、それに応じてシステム状態が更新されます。ステーキングは、ステーキング報酬ウォレットから資金を引き出し、すべての参加者の未請求額と同等のトークン数を保持します。

フィーアンドブートストラップ報酬

フィーアンドブートストラップ報酬コントラクトは、ガーディアンが受け取る手数料とブートストラップ報酬の状態を管理します。手数料とブートストラップ報酬のアーキテクチャは、ステーキング報酬コントラクトのアーキテクチャと似ています。

さらに、フィーアンドブートストラップ報酬は、ブートストラップ・ウォレットからブートストラップ報酬を引き出します。すべてのガーディアンの未請求額と同等のトークン数を保持します。

プロトコルウォレット:ステーキング報酬ウォレットとブートストラップ報酬ウォレット

ステーキング報酬ウォレットブートストラップ報酬ウォレットは、関連する報酬コントラクトが設定された最大レートまで資金を引き出すことを可能にするプロトコル基金を保持します。プロトコルウォレットは、プロトコル資金を保存するためのシンプルで安全なメカニズムを提供します。

コントラクト・アーキテクチャは、グローバル割り当てと委員会ガーディアンの2つのレベルに基づいています。フィーアンドブートストラップ報酬は、認証された仮想チェーン料金と一般的な仮想チェーン料金の2つのインスタンスから料金を収集します。 プロトコルウォレットは、PoSコントラクトのガバナンスおよび管理インフラストラクチャから切断され、ウォレットのクライアントを設定する機能管理者と資金の引き出しを制御する移行管理者の2種類の管理者によって管理されます。

料金ウォレット:一般料金ウォレットと認定料金ウォレット

料金ウォレットは、仮想チェーンによって支払われるサブスクリプション料金を保持します。2 つの別々の料金ウォレットのインスタンスが展開されます。1 つは一般的な仮想チェーン料金用で、もう 1 つは認定された仮想チェーン料金用です。料金ウォレットは、サブスクリプション料金を 30 日間のバケットに保存し、各期間の料金を正確に分割します。

2つの料金ウォレットクライアントであるフィーアンドブートストラップ報酬は、前回の支払いから今回の支払いまでの支払い済み料金を収集します。

ガーディアン・レジストレーション

ガーディアン・レジストレーションコントラクトは、ガーディアン登録データを保存します。また、ガーディアンがデータを登録、変更、および登録解除できるようにします。さらに、コンタクトはメタデータマップを保存し、各ガーディアンが Orbs プラットフォームによって照会される汎用キーを保存できるようにします。例えば、ガーディアンの識別データへのリンクを「ID_FORM_URL」のメタデータキーに保存できます。

ガーディアン・レジストレーションは、OrbsアドレスからEthereumアドレスなどの他のコントラクトがOrbsアドレスを使用した関数呼び出しを許可するために使用するマッピング関数を提供します。ガーディアン・レジストレーション・コントラクトは、ガーディアン登録ステータスの変更について選挙コントラクトに通知します。

認証

認証コントラクトは、各ガーディアンの認証ステータスを保存します。認証データは、ガーディアンの認証を設定およびクリアできる CertificationManager によって管理されます。

認証コントラクトは、ガーディアン認証の変更について選挙コントラクトに通知します。

サブスクリプション

サブスクリプションコントラクトは、仮想チェーンのサブスクリプション・ステータスを管理します。このコントラクトにより、開発者は仮想チェーンを作成し、Orbs プラットフォームで使用されるメタデータ・プロパティを含むそのプロパティを変更し、仮想チェーン・サブスクリプションを拡張できます。

仮想チェーンの作成とサブスクリプションの拡張は、サブスクリプション・コントラクトと直接対話することによってではなく、サブスクリプション・コントラクトを更新するサブスクリプション・プラン・コントラクトを呼び出すことによって行われます。サブスクリプションのコンタクトは、有効なサブスクリプション・プラン・コントラクトのリストを保持しています。

サブスクリプション・プラン

サブスクリプション・プラン・コントラクトはステートレス・コントラクトであり、仮想チェーン・サブスクリプションのプランと料金体系を担当します。仮想チェーンの所有者は、サブスクリプション・プラン・コントラクトを呼び出して、仮想チェーンを作成し、そのサブスクリプションを継続します。

サブスクリプション・プラン・コントラクトでは、事前の契約に基づいてティア(プラン)と月額料金が割り当てます。複数のサブスクリプション・コントラクトがシステムに展開される場合があります。

プロトコル

プロトコルコントラクトは、Orbs プラットフォームのプロトコル・バージョンのアップグレードを設定および同期する責任があります。プロトコル・コントラクトは、本番環境やカナリアなどの複数の展開サブセットをサポートしており、それぞれが異なるプロトコル・バージョンで動作する場合があります。

プロトコル・バージョンのアップグレード時に、将来の時刻がプロトコル・アップグレードの失効基準日として設定されます。

コントラクト管理および管理アーキテクチャ

OrbsのPoSコンタクト・アーキテクチャは、個々のコントラクトの移行や、将来を見越した大幅な移行のために設計されています。他のコントラクトと相互作用するPoSシステムのコントラクトは、既存のアドレスをコンタクト・ストレージに保存します。コントラクトの移行時に、レジストリはすべての管理対象のコンタクトにプッシュ通知を送信して、それに応じてコントラクト・リストを更新します。

システム・コントラクトに加えて、コントラクト・レジストリには最新の管理者リストが保存されます。同期を確実にするために、コンタクトは、すべての管理操作の前に、現在の適切な管理者のレジストリを照会します。管理者はレジストリ・アドミンによって任命され、レジストリ・アドミンは管理者の役割を任命または取り消すことができます。

コントラクト・レジストリは、レジストリの移行時だけでなく、コンタクトアドレスの更新に対しても更新イベントを発行します。アプリケーションは、初期段階のコントラクト・レジストリ・アドレスを知ることにより、最新のコントラクト・リストを追跡したり、すべてのコントラクト・バージョンから統合イベントリストを作成したりできます。

コントラクト・レジストリによるコンタクト管理の例外は、プロトコル・ウォレット・コントラクトです。プロトコル・ウォレット・コントラクトには、機能と移行を管理する個別の管理者がいます。

役割
  • registryAdmin

    RegistryAdminはコントラクト・レジストリを管理し、中核となる管理エンティティです。RegistryAdminは、レジストリのプロパティとコンタクトを更新し、マネージャーを割り当てることができます。レジストリ管理者は、レジストリによって管理される各コントラクトに保存され、コンタクトが指定した個々のレジストリを変更できます。

    box image
  • initializationAdmin

    initializationAdminは、管理パラメーターからコントラクトの状態をモニタリングし、デリゲータやガーディアンの情報をネットワークにアップデートします。initializeAdminはコントラクト・デプロイヤに設定されており、その実行はコンタクト・コンストラクタの拡張と見なすことができます。initializeAdminは、移行期間のみに実行される、限定的な役割を持っており、転送することはできず、初期化が完了するとその役割は取り消されます。

    box image
  • migrationManager

    MigrationManagerは、コントラクト・レジストリによって指定された、すべての移行アクションを制御します。移行マネージャーは、レジストリに連絡先を設定し、連絡先の状態と残高を移行できます。MigrationManagerは高い権限を持っているため、新しいコントラクト・バージョンへ移行する際は、特定のミッションにmigrationManagerを指定してから、その特権を取り消すことをお勧めします。

    box image
  • functionalManager

    FunctionalManagerは、コントラクト・レジストリによって任命され、コントラクトの管理パラメータと機能を制御します。

    box image
  • certificationManager

    CertificationManagerは、ガーディアンの認定を管理します。CertificationManagerは、ガーディアン認定ステータスを設定およびクリアすることができます。ガーディアン認定は、IDURLメタデータを使用してレジストレーション・コントラクトで認識したガーディアンの識別データに従って決定されます。

    box image

Orbs 全体像に戻る

本ウェブサイトでより良い経験を提供するため、クッキーを使用しています。当サイトを継続して使用することにより、クッキーポリシーに同意したことになります。