仕事のライフサイクル(Part 2)
今回のパート2では、HUMAN Protocolの設計に組み込まれた安全対策について紹介していきます。ここでは、仕事をキャンセルするプロセスを検証し、ユーザーが完了した仕事に対してのみ支払いを実行する事をシステムが保証し、ワーカーの仕事の完了の状態に合わせて確実に支払いを機能させる事を示します。
この例では、オラクルのブロックチェーンアクションを見ていきます。ユーザーがバックグラウンドで行われているブロックチェーンの働きに気づかないユースケースもありますが、それでも仕事のライフサイクルにおける安全性、公平性、信頼性を確保するために不可欠なプロセスです。
ユーザーがジョブをローンチする…
バリデーターが仕事を検証し、それを完成させるためのオラクルを割り当てます。Exchangeでは、スマートコントラクトからタスクを引き出し、Exchangeオラクルに質問を提供します。
その間…
レコーディングオラクルは回答をS3バケットに書き込み、ユーザーだけが解読できるようにします。プロトコルはEthereumの公開鍵と秘密鍵を利用してデータの暗号化と復号化を行います。
同時に、レコーディングオラクルは、作業者のウォレットアドレスや作業証明用のURLの更新を含む、作業に対する資金を確保するための更新を(スマートコントラクトを介して)ブロックチェーンに書き込みます。
仕事が1%完了した時点で、ユーザーがURLから回答を解読し、手順の違いに気づく…。
実行された質問は「牛の画像をすべて選択してください」というものでした。しかし、彼らが実際にラベリングを要求していたのは、「牛の中から雄牛を選択するラベリング」だったのです。そこで彼らは質問を「cow」から「cattle」に変更したいと考えます。
ジョブをキャンセルします。重要なのは、ユーザーはそこまでにされた1%の仕事は支払う必要があるということです。なぜなら、レコーディングオラクルは、すでに完了した仕事に対してスマートコントラクトでお金を予約しているからです。ユーザーがキャンセル後に請求できるのは、未使用のHMTの分だけとなります。
このような理由から、ジョブのキャンセルは必ずしも即座に行われるわけではありません。キャンセルはExchangeが仕事の提供を停止するシグナルを発信して行われますが、それが機能するまでにされた仕事には支払いが必要となります。
レピュテーションオラクルは、スマートコントラクトで誰がどのような仕事をしたかを読み取り、その仕事を実行した人に対応するレピュテーション(評価)をスマートコントラクトに供給します。そしてスマートコントラクトはお金を払い出し、このプロセスを経てジョブがキャンセルされます。
ジョブのキャンセルが安全理由…
- スマートコントラクトは、適切なキャンセルキーを持っている人にのみジョブのキャンセル権を与えます
- 各オラクルが他のオラクルをチェックすることで、ネットワーク内での悪用が防止されます。レピュテーションオラクルは、レコーディングオラクルから送られてくる回答の品質を検証する為の全てのデータを保持していますが、レコーディングオラクル自身が保持しているデータ量は少ないものの、チェックを担当するExchangeよりも多く保持しています。各エンティティは、キューに入っている前のエンティティを、自分が隠し持っている秘密のサンプルで監視し、正当性を確認します。
- ここで最も重要なのは、各エンティティがスマートコントラクトをローリングベースで更新している事です。つまり、問題が生じた場合にすぐに発見される為、どのエンティティもルールを破る事はできないということです。もう一つの重要な部分は、ジョブに割り当てられたHMTは、スマートコントラクトからExchangeオラクルに流れる為、バリデーターやレピュテーション及びレコーディングオラクルはそれに触れないという事です。これらのエンティティには、仕事が完了した時点で報酬が支払われます。これは、それ以前にルールを破ろうとするインセンティブは生じないという事を意味します。
Twitterでフォローするか、コミュニティのTelegramチャンネルに参加して、Foundationの最新情報を手に入れてください。