---
description: This page describes OpenWork at a higher level and links to detailed sections
---

# Overview

The OpenWork System works across 3 layers of **blockchains**.

1. The [**Main DAO**](../smart-contract-details/openapi-1) on the Ethereum **blockchain** which is the decentralised governing body of OpenWork, where voting power is determined by OpenWork tokens held, handling upgrades, managing the OpenWork system  & treasury management but not limited to just that.
2. The[ **OpenWork Chain**](../smart-contract-details/openapi) is **a blockchain** (L2 on ethereum) that underpins the entire OpenWork ecosystem. It securely records every work transaction on an immutable ledger dedicated to on-chain work, hosts key native smart contracts like Athena (skill oracles) used for key decentralised functions like dispute resolution.&#x20;
3. The [**Local OpenWork Contract**](../smart-contract-details/local-openwork-job-contract) which enables users to use OpenWork on **any preferred blockchain** (referred to as a local chain, being local to the user). This contract communicates with the OpenWork chain which acts as a single source of truth to record data and uses its functions like Athena's dispute resolution. For example, users who already use Polygon chain, can use OpenWork on polygon- the OpenWork chain in turn is still used as the back-end. In other words, we've created OpenWork in a way where it's chain-agnostic and designed to accommodate any blockchain the user wants to use it on. Initially, the Local OpenWork Contract will be built on EVM-based chains, and later on non-EVM chains like Solana.

The diagram below represents the higher level architecture of the OpenWork System.

<figure><img src="https://4132461501-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0rogSCo9NWiT9aYcfupo%2Fuploads%2FGkSPdo7kkcYEA8ddUfi0%2FThe%20Openwork%20Chain%20(2).png?alt=media&#x26;token=ef5466a2-5207-4c83-b405-40bb405de1a2" alt=""><figcaption><p>The OpenWork System</p></figcaption></figure>

The below table describes all the contracts on all chain in brief:\
Latest version of contracts on GitHub - [https://github.com/AnasShaikh/openwork-contract-v0.2/tree/main/src/Final%20Set%20of%20Contracts](https://github.com/AnasShaikh/openwork-contract-v0.2/tree/main/src/Final%20Set%20of%20Contracts)

| Chain          | Name of Contracts                                                                                                                                                                   | Short description                                                                                                                                                                                                                                                                                     |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ethereum       | [Main Token Contract](../smart-contract-details/main-token-contract)                                                                                                                | handles minting/burning and other token specific functions                                                                                                                                                                                                                                            |
| Ethereum       | [Main DAO ](../hidden/openapi-1)                                                                                                                                                    | <ul><li>handles key proposals, handles upgrades across chains &#x26; manages token functions, selects sequencer</li><li>contains the OpenZeppelin Governor Logic<br><br><br><br></li></ul>                                                                                                            |
| Ethereum       | [Main Rewards](../smart-contract-details/main-rewards-contract-and-native-rewards-contract)[ Contract](../smart-contract-details/main-rewards-contract-and-native-rewards-contract) | handles the payment of rewards after all conditions are met                                                                                                                                                                                                                                           |
| Ethereum       | [Main Bridge Contract](../smart-contract-details/bridge-contracts)                                                                                                                  | interfaces with all other chains to send/receive data                                                                                                                                                                                                                                                 |
| OpenWork Chain | [Native OpenWork Job Contract](../smart-contract-details/native-openwork-job-contract)                                                                                              | contains functions to create a profile, post job, apply to job, submit work, release payments & all other job related functions described in this doc                                                                                                                                                 |
| OpenWork Chain | <p><a href="../smart-contract-details/main-rewards-contract-and-native-rewards-contract"><br>Native Rewards Contract<br></a></p>                                                    | tracks user rewards and sends the info to Ethereum                                                                                                                                                                                                                                                    |
| OpenWork Chain | <p><a href="../smart-contract-details/openapi-2">Native DAO Contract </a><br></p>                                                                                                   | <p>NativeDAO handles Athena related proposals, voting and penalizing malicious members and  has the all Skill Oracle related functionality like adding oracles/members,etc.<br><br><br></p>                                                                                                           |
| OpenWork Chain | <p><a href="../smart-contract-details/native-athena-contract">Native Athena</a><br></p>                                                                                             | Native Athena handles voting on disputes and resolution, skill verification and questions                                                                                                                                                                                                             |
| OpenWork Chain | [Native Bridge Contract](../smart-contract-details/bridge-contracts)                                                                                                                | interfaces with all other chains to send/receive data                                                                                                                                                                                                                                                 |
| Local Chains   | [Local OpenWork Job Contract](../smart-contract-details/local-openwork-job-contract)                                                                                                | <p>contains bridged-functions to create a profile, post job, apply to job, submit work, release payments &#x26; all other job related functions. Bridged-function are just wrapper functions which don’t do anything other than calling the corresponding functions on the OpenWork chain<br><br></p> |
| Local Chains   | [Local Athena Contract](../smart-contract-details/local-athena-contract)                                                                                                            | has all dispute-resolution related bridged-functions                                                                                                                                                                                                                                                  |
| Local Chains   | [Bridge Contract](../smart-contract-details/bridge-contracts)                                                                                                                       | interfaces with all other chains to send/receive data                                                                                                                                                                                                                                                 |

The below table shows how all key functions work across chains.

<table><thead><tr><th width="226">Section with Link</th><th>Key Functions with Explanations</th></tr></thead><tbody><tr><td><a href="../ui-details/editor">Profile</a></td><td><p></p><table data-header-hidden><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>setProfile</td><td><p>The unregistered (or registered) user calls the function using UI.<br>UI <a href="../other-details/what-gets-stored-in-ipfs">pins data to IPFS</a> and gets a hash.<br>The user then calls the function in the Local OpenWork Contract on their local chain with the generated hash. </p><p>The call is bridged to the Native OpenWork Contract on OpenWork Chain to record the profile.</p></td></tr><tr><td>getProfile</td><td>The registered user calls the getProfile function on their local chain using the UI.<br>The call is bridged to the Native OpenWork Contract on OpenWork Chain to retrieve the profile data (stored as an IPFS hash).<br>The UI calls IPFS to get the data from stored in the hash.</td></tr></tbody></table><p></p></td></tr><tr><td><a href="../ui-details/editor">Jobs</a></td><td><p></p><table data-header-hidden><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>applytoJob</td><td>User calls function using UI.<br>UI pins job application details to IPFS and gets the hash.<br>The UI calls the function on the Local OpenWork contract on the local chain with the hash.<br>The call gets bridged to the Native OpenWork Contract on the OpenWork chain.</td></tr><tr><td>getJobDetails</td><td>The user calls the getJobDetails function on their local chain, and the call is bridged to the Native OpenWork Contract on OpenWork Chain to retrieve detailed information for the specified job.</td></tr><tr><td>startJobInterChain</td><td>User calls function on Local OpenWork Contract on the local chain through the UI.<br>Funds are locked in the local chain.<br>Function call is bridged to the OpenWork chain to update the status of this Job.</td></tr><tr><td>release&#x26;TerminateJob</td><td>The Job Giver calls the  function on their local chain once the work is approved.<br>The Local OpenWork Contract checks with the Native OpenWork contract whether to release payment.<br>If everything checks out, payment is released on the local chain.</td></tr></tbody></table></td></tr><tr><td><a href="../ui-details/editor">Athena</a></td><td><p></p><table data-header-hidden><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>raiseDispute</td><td>This function is called on the User's local chain.<br>The dispute fee is locked in the Athena Client contract on the local chain.<br>The dispute details are sent to the OW chain.</td></tr><tr><td>voteonDispute</td><td>The Skill Oracle member of a relevant Oracle calls this function on the OpenWork Chain.<br>Vote is registered in the Native Athena contract on the OW chain.</td></tr><tr><td>claimDisputedAmount</td><td>This function can be called by the dispute winner on the chain the dispute was raised on.<br>The disputed amount is sent to the dispute winner on the same chain.</td></tr><tr><td>applyForSkillOracle</td><td><p>A DAO member with atleast 100k tokens can call this function on the Native Athena Contract on the OW chain.</p><p>A proposal gets created in the DAO.<br>This proposal then go through a voting process and if the vote is passed the applicant is added to the specified Skill Oracle</p></td></tr></tbody></table></td></tr><tr><td><a href="../ui-details/markdown">DAO</a></td><td><p></p><table data-header-hidden><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>joinDAO</td><td>This function can be called by anyone on the Ethereum with atleast 100k OW tokens.<br>The specified amount is staked for the specified period and the user is added to the list of DAO members.</td></tr><tr><td>getStake</td><td>This function(in the Main DAO on Ethereum) will be mainly called by the contracts on all chains to verify if a caller is a DAO member or not and the amount he has staked. But it can be called by anybody.</td></tr><tr><td>propose</td><td>The user (an eligible DAO member) calls the propose function on the mainDAO Contract on Ethereum via the UI to submit a proposal, which is compatible with Governor-style voting.</td></tr><tr><td>voteonProposal</td><td>Any DAO member calls the voteonProposal function on the Main DAO Contract on Ethereum via the UI to cast a vote on an active proposal, with votes weighted by staked tokens + duration of staking, and the result is recorded on-chain.</td></tr><tr><td>redeemTokens</td><td>The user calls the claimRewards function on the Main DAO contract on Ethereum via the UI to initiate the unstaking process, with tokens unlocked after the unbonding period (e.g., 14 days).<br></td></tr></tbody></table></td></tr></tbody></table>
