-
Notifications
You must be signed in to change notification settings - Fork 39
9. FAQ and Help
A Job is an instance of the HMT Escrow smart contract. It contains a link to the Job manifest, the addresses for oracles and the amount that will be paid upon successful completion of the Job. The contract is an escrow agreement and safeguards the tokens used to pay out Workers. When the conditions of the contract are fulfilled, the tokens are automatically released and paid to Workers.
To create a Job two things are required:
A job manifest - a JSON document that describes the tasks that must be completed and the rules around task completion. It also contains URL links to Job data (e.g images/text etc).
Tokens - before a Job can be distributed to a Worker, it must be funded. This is part of the Job creation process.
Once the above information is available, a user can call the “escrow factory” to actually create an instance of hmt-escrow. The escrow factory is a smart contract that generates new jobs. Once the Job is created, it must be funded and the job manifest must be attached. At this point the Job is recorded on-chain, its status is changed to pending and is available to be distributed to Workers by an Exchange Oracle.
Exchange Oracles are responsible for distributing the tasks within a Job to individual Workers. Recall that a single job will likely contain multiple tasks and each of these tasks will be distributed to individual Workers, so a single task will be completed by multiple Workers. This is important because we need a way to ensure that each worker is completing tasks to a required accuracy. By serving the same task to multiple workers, we are able to compare Worker results to determine the quality of Worker responses.
Generally speaking, Workers will reside within specialized dApps, like the HUMAN App or the U.APP. Whilst active in the app, a Worker will have the ability to select between different Job types. For example, perhaps a Worker would like to perform some image annotation, from within the HUMAN App, the Worker will select the image annotation job type and will then be served a corresponding image which they must label. Once the image is labeled it will be sent to a Recording Oracle (via the Exchange Oracle), who will then verify that the image annotation has been performed properly.
Recording Oracles are responsible for validating Worker responses. The oracle’s sole purpose is to validate Worker responses. It does this by comparing Worker responses for specific tasks. If it notices that there is no consensus amongst responses for a particular task, it will ask the Exchange Oracle to send out the task again, but to a larger number of Workers. It will repeat this process until it gets satisfactory responses and the results converge.
Reputation Oracles are responsible for maintaining Worker reputations and managing payouts. Worker reputations are calculated based on their previous responses. All Workers start with no reputation; as they successfully complete tasks, their reputation increases. If Workers respond with unsatisfactory responses their reputation will be decreased. Payouts are linked to reputations, so a Worker with a high reputation will receive the maximum payable amount and Workers with low reputations will receive minimal payouts.
Workers are paid directly to their wallet address.