Workchain - The decentralized on-demand workforce

PennApps XVIII

Summary

There are millions of people who are willing and seeking work but can’t find the opportunities. Thousands of tech companies want to access an on-demand workforce where individuals can perform simple human-intelligence tasks (HIT) for the companies, that computers are unable to do.

The need for such a platform has been proven by the likes of Amazon Mechanical Turk, but it fails to enable those who are most in need of such opportunities. Workers on Turk must go through a Know Your Customer (KYC) process, and there are restrictions to non-US citizens. As a result, there are large barriers to low-tier/minority laborers that need access to these simple tasks where they could increase their daily earnings by several times.

Our solution is a scalable, low-barrier, 24/7 platform that provides a two-fold solution to both workers and companies. Workchain is a decentralized application -- a crowdsourcing marketplace that enables workers to get paid for completing thousands of simple, easy-to-access human-intelligence tasks which companies ultimately integrate to advance their technology and products. Built on the EOS blockchain, the fastest, most powerful blockchain for building decentralized apps, Workchain allows there to be no transaction fees, rapid user onboarding, immutable data, and added security. Furthermore, only the company that requests data through the tasks own and have access to their data.

Workers can work asynchronously, whenever convenient, choose to complete tasks based on interest and skill level and receive instant online payments for their contributions, wherever they are. Companies access an on-demand workforce and can easily find workers with specific qualifications. Workchain provides simpler and more secure solution where the transactions go directly from companies to workers and vice versa. Companies decide how much they pay the workers, and pay for only what they receive.

Workchain ultimately allows workers and companies to provide and extract more value by empowering workers to find more employment, while providing companies greater access to human intelligence for technological advancement.

Tech Specs

We have deployed a smart contract on a private EOS blockchain network. All data related to requester/worker registration, task lists, and payments go on chain and can be pulled from the chain.

This allows all data created on the platform to be immutable, and data is owned by respective accounts in RAM. For example, if a requester creates a task, all data about that task is only owned by the requester in his/her allocated RAM.

Moreover, transactions are immediate on EOS-- it can host thousands of transactions per second, and goes from account to account. There is no need to go through a centralized institution such as banks. There are no transaction fees either-- which is a win-win for both workers and requesters.

RPC API Documentation:

The smart contract was deployed on the workchaineos account.

All tables can be found on the workchaineos account.

Names of important tables include:

requesters - Companies that request tasks

workers - People that are completing the tasks

tasks - The tasks that are being put up on the platform

workglobal - Holds some global variables important for the environment

Chain API Endpoint: http://wps-test.hkeos.com:8888/v1/chain/get_info This returns basic information of the chain.

Get Account: http://wps-test.hkeos.com:8888/v1/chain/get_account This gives information about a given account. Body params: account_name string

Get Table Rows: http://wps-test.hkeos.com:8888/v1/chain/get_table_rows

This is where we pull all of the data for the web platform.

Payload would be a JSON like this for our specific chain: { "code": "workchaineos", "scope": "workchaineos", "table": "tasks", "lower_bound": 0, "upper_bound": 2, "json": "true", "limit": 10 }

This would return the first two entries in the tasks table.

Get Currency Balance: http://wps-test.hkeos.com:8888/v1/chain/get_currency_balance This returns the amount of money in a certain account.

Payload would be a JSON like this for our specific chain: { "code": "workchaineos", "account": "requesterone", "symbol": "EOS", }

Sending a request with this payload would return the amount of money in requesterone's account.

How to pull data from the RPC API in Javascript

Here is an example of how to pull data from the RPC API endpoint using Javascript.

var data = JSON.stringify({
  "code": "workchaineos",
  "scope": "workchaineos",
  "table": "tasks",
  "lower_bound": 0,
  "upper_bound": 2,
  "json": "true",
  "limit": 10
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "wps-test.hkeos.com:8888/v1/chain/get_table_rows");

xhr.send(data);
Share this project:
×

Updates