7-2. Layer 1 全体プロセス
Last updated
Last updated
依頼者 (Requester) によるJobの登録
依頼者は、Blockchain上のEMETH Coreへ親Jobの情報を登録し、Fee(EMETH NodeへのFee + VerifierへのFee)をEMETHトークンで支払います。
Jobに紐づくデータセットはEMETH Storageに格納されます。
処理開始前であれば、依頼者はEMETH CoreへCancel表明を送ることで、依頼をキャンセルできます。この際、支払ったFeeは全額返金されます。
EMETH Cacheサーバによる常時同期キャッシュ
EMETH CacheサーバはEMETH Core上のJobを常時同期しキャッシュします。EMETH Coreに登録されたJob情報はEMETH Cacheへ自動的に連動されます。
L1サーバによるSubJobの生成
L1サーバはEMETH Cacheサーバの情報を監視し、Split 可能な Jobがあり、かつ依頼者が Split 処理を許可している場合、以下の処理を行います。
Splitterを呼び出し、データセットを分割します。
Jobを複数のSubJobに分割し、親Jobとして紐付けてEMETH Coreへ登録します。
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されます。
VerifierによるtimeoutしたJobやSubJobの処理
VerifierはEMETH Cacheサーバの情報を監視し、timeoutとなったJobやSubJobを検索します。
Blockchainへtimeout処理を送ります。この際、処理を行っていたEMETH Nodeは、timeoutペナルティ分のEMETHトークンが没収されます。
Verifierによる処理結果の検証
VerifierはEMETH Cache上の完了したJobやSubJobを監視します。
対象となるJobやSubJobに対して、EMETH Storageからデータセット及びEMETH Nodeによる処理結果を取得します。
Verifierプログラムを起動して検証し、処理結果の検証が合格であればverify命令を、不合格であればrejectResult命令をBlockchainに送ります。また、SubJobが不合格の場合はSubJobの再登録を行います。
AggregatorによるSubJobの完了確認
SubJobが全て完了したことを確認し、Aggregatorプログラムを呼び出して処理結果を統合し、EMETH Storageに記録します。
また同時に、EMETH Core上の親JobのStatusをConfirmedに更新します。
検証結果に応じた報酬の支払い
検証に合格したJobやSubJobに対して、EMETH Nodeに報酬が支払われます。
合格したJobやSubJobの処理実績は、累計fuel量としてEMETH Core上に累積カウントされます。
検証に不合格したJobやSubJobに対して、EMETH Nodeから罰金を徴収します。