7-2. Layer 1 全体プロセス

  1. 依頼者 (Requester) によるJobの登録

    • 依頼者は、Blockchain上のEMETH Coreへ親Jobの情報を登録し、Fee(EMETH NodeへのFee + VerifierへのFee)をEMETHトークンで支払います。

    • Jobに紐づくデータセットはEMETH Storageに格納されます。

    • 処理開始前であれば、依頼者はEMETH CoreへCancel表明を送ることで、依頼をキャンセルできます。この際、支払ったFeeは全額返金されます。

  2. EMETH Cacheサーバによる常時同期キャッシュ

    • EMETH CacheサーバはEMETH Core上のJobを常時同期しキャッシュします。EMETH Coreに登録されたJob情報はEMETH Cacheへ自動的に連動されます。

  3. L1サーバによるSubJobの生成

    • L1サーバはEMETH Cacheサーバの情報を監視し、Split 可能な Jobがあり、かつ依頼者が Split 処理を許可している場合、以下の処理を行います。

      • Splitterを呼び出し、データセットを分割します。

      • Jobを複数のSubJobに分割し、親Jobとして紐付けてEMETH Coreへ登録します。

  4. EMETH Nodeによる処理の実行

    • EMETH NodeはEMETH Cacheサーバの情報を監視し、以下の処理を行います。

      • 未処理のJobやSubJobの中からEMETH NodeへのFeeおよびDeadlineが魅力的なJobやSubJobを探します。

      • EMETH Coreへ処理開始の意思表明 (process) を送ります。

      • EMETH Storageから該当JobやSubJobのデータセットをダウンロードして処理を開始します。

      • 処理結果をEMETH Storageへ格納し、EMETH Coreへ完了報告 (submit) を送ります。

    • EMETH Nodeは、処理開始の意思表明後に辞退することも可能です。この際、ペナルティ分のEMETHトークンが没収され、burnされます。

  5. VerifierによるtimeoutしたJobやSubJobの処理

    • VerifierはEMETH Cacheサーバの情報を監視し、timeoutとなったJobやSubJobを検索します。

    • Blockchainへtimeout処理を送ります。この際、処理を行っていたEMETH Nodeは、timeoutペナルティ分のEMETHトークンが没収されます。

  6. Verifierによる処理結果の検証

    • VerifierはEMETH Cache上の完了したJobやSubJobを監視します。

    • 対象となるJobやSubJobに対して、EMETH Storageからデータセット及びEMETH Nodeによる処理結果を取得します。

    • Verifierプログラムを起動して検証し、処理結果の検証が合格であればverify命令を、不合格であればrejectResult命令をBlockchainに送ります。また、SubJobが不合格の場合はSubJobの再登録を行います。

  7. AggregatorによるSubJobの完了確認

    • SubJobが全て完了したことを確認し、Aggregatorプログラムを呼び出して処理結果を統合し、EMETH Storageに記録します。

    • また同時に、EMETH Core上の親JobのStatusをConfirmedに更新します。

  8. 検証結果に応じた報酬の支払い

    • 検証に合格したJobやSubJobに対して、EMETH Nodeに報酬が支払われます。

    • 合格したJobやSubJobの処理実績は、累計fuel量としてEMETH Core上に累積カウントされます。

    • 検証に不合格したJobやSubJobに対して、EMETH Nodeから罰金を徴収します。

Last updated