Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
# Ocean bounty : Create a front-end focused implementation of a marketplace on the Ocean Testnet
## How can you help?
## How does a marketplace on Ocean Protocol function?
A marketplace on the Ocean Protocol is a service where publishers can list the assets (data sets) available to them, which they consider have value, and consumers interested in this asset can see what’s available and purchase it. We have [different components](https://docs.oceanprotocol.com/concepts/components/) that make up the marketplace. You can get to know everything about how marketplaces on Ocean function by going through our [core concepts](https://docs.oceanprotocol.com/concepts/introduction/)
## What type of marketplaces can you build?
Here is a use case for a marketplace idea that can get you started on thinking about what to publish on a marketplace
**Setup a Data Cleaning Service Marketplace-** You as a data scientist, would like to offer specialised expert data cleaning services to other organizations. You wish to obtain the data for cleaning and publish the cleaning data results using Ocean. You can consider setting up a marketplace to offer your services on. Other similar data scientists would also like to join your marketplace and offer similar services once the reputation of the marketplace is established.
These are just one such marketplace idea. Feel free to come up with similar ideas and use cases. You can bounce off your ideas with us on [Gitter](https://gitter.im/oceanprotocol/Lobby) before you start implementing them!
Some of the domains that we would like to see interesting marketplace implementations include (but not limited to)
- Artificial Intelligence
- Big data/datascience
- Machine learning
- Data commons (free data marketplace)
- Autonomous vehicles
**Some other ideas**
- A *super* simple marketplace for buying & selling data at fixed price
- A portal to publish/discover/consume commons data
- A data exchange that looks like a crypto token exchange (e.g. bittrex).
- Integrate Ocean with an existing data science tool or IDE to buy & sell data, or publish/consume commons data
- Integrate Ocean with an existing data marketplace to buy & sell data
## How to start setting up a marketplace?
Here are the materials that you need to get started
- [OEPs for Ocean Protocol](https://github.com/oceanprotocol/OEPs) (will help understand the design and flow)
- [Useful to understand how your marketplace can helps data scientists](https://blog.oceanprotocol.com/how-ocean-can-benefit-data-scientists-7e502e5f1a5f) (primary consumers)
- [Setting up Ocean Protocol testnet](https://blog.oceanprotocol.com/a-dive-into-the-ocean-testnet-98fdb43456ce)
- [Design of Ocean Protocol](https://blog.oceanprotocol.com/a-deep-dive-into-ocean-protocol-design-8fe78fcf8aa)
- [PoC Marketplace](https://github.com/oceanprotocol/pleuston)
- [Marketplace setup](https://docs.oceanprotocol.com/setup/marketplace/)
- Step-by-Step [marketplace bootstraping from Scratch in React](https://docs.oceanprotocol.com/tutorials/react-setup/)
- [Super helpful in general](https://docs.oceanprotocol.com/)
- Advanced understanding of [on-chain access control on Ocean](https://blog.oceanprotocol.com/secure-on-chain-access-control-for-ocean-protocol-38dca0af820c)
## Before you start building
Before you start building, you should reach out to us through either a Github comment below or on our [Gitter channel](https://gitter.im/oceanprotocol/Lobby) with
1. What the use case of your marketplace would be?
2. How you plan to approach the problem?
3. A timeline of how long you think your solution will take to implement.
This will help us assist you in your project and ensure you are on the right path.
## What would make us happy
Use Squid.js to demonstrate a fresh approach to building the marketplaces with new user experiences. [Pleuston](https://github.com/oceanprotocol/pleuston) is our example of our demo marketplace. We want you to use our [Squid.js API](https://github.com/oceanprotocol/squid-js/tree/develop/src/examples). Here’s some of the [important APIs](https://github.com/oceanprotocol/dev-ocean/blob/master/doc/architecture/squid.md).
This is a complete list of all the classes and corresponding methods. We want you to use as many of these methods as you can to come up with new front-end focussed implementations for marketplaces.
**Please note** - The table format below may not appear properly on Gitcoin, please refer to the bounty on Github.
-- | -- | -- | --
Ocean | getInstance (js, java)/ Ocean (py) | Ocean | Implemented
Ocean | getAccounts | array[Account] | Implemented
Ocean | searchAssets | array[Asset] | Implemented
Ocean | searchAssetsByText | array[Asset] | Implemented
Ocean | searchOrders tbd | array[Order] | Not Implemented
Ocean | getOrdersByAccount | array[Order] | Implemented
Ocean | register | string | Implemented
Ocean | resolveDID | ddo | Under Implementation
Ocean | getOrder | Order | Under Implementation
Ocean | getAsset | Asset | Under Implementation
Account | getId | string | Implemented
Account | getOceanBalance | number/integer | Implemented
Account | getEtherBalance | number/integer | Implemented
Account | getBalance | Balance | Implemented
Account | requestTokens | number/integer | Implemented
Asset | getId | string | Implemented
Asset | purchase | Order | Implemented
Asset | getDID | string | Under Implementation
Asset | getDDO | ddo | Under Implementation
Asset | publishMetadata | string | Under Implementation
Asset | getMetadata | Metadata | Under Implementation
Asset | updateMetadata | boolean | Under Implementation
Asset | retireMetadata | boolean | Under Implementation
Asset | getServiceAgreements | array[ServiceAgreement] | Under Implementation
ServiceAgreement | getId | string | Under Implementation
ServiceAgreement | getPrice | number/integer | Under Implementation
ServiceAgreement | getStatus | xxx | Under Implementation
ServiceAgreement | publish | xxx | Under Implementation
ServiceAgreement | retire | xxx | Under Implementation
ServiceAgreement | getAccess | xxx | Under Implementation
Order | getId | string | Implemented
Order | getStatus | AccessStatus | Implemented
Order | verifyPayment | boolean | Under Implementation
Order | pay | string | Implemented
Order | commit | boolean | Implemented
Order | consume | blob | Implemented
We want you to use these existing methods to create unique front end implementations of the marketplace.
Incase you have any questions, we are always available on Gitter.
## Seen this problem before?
Any help solving this is welcome. Feel free to leave any comments and help someone else to solve it. We might airdrop tokens to someone even if not directly completing bounty.
## Questions & Reviews
Pull requests will be reviewed by one of the maintainers or long-term contributors. In case of any additional questions feel free to ask in this thread and we will do our best to add the missing info :)
## Things to know
The bounty lifecycle process including payout will be managed using [Gitcoin](https://gitcoin.co/explorer?network=mainnet&keywords=oceanprotocol&order_by=-web3_created).
We'll be responding to your questions here, but for discussion and clarification we recommend to join also our [Gitter channel](https://gitter.im/oceanprotocol/Lobby) where our tech community is accessible.
In order to see the PROCN balance in your wallet you'll need to reference the related token contract with address _0xf2aabdd898a0139195b2b5da7387d43a45ded254_. If you use a Metamask plugin you'll find the the exact steps [here](https://metamask.zendesk.com/hc/en-us/articles/360015489011-Managing-ERC20-Tokens).
Lastly, even if it is a contest bounty, we will reward all valuable contributions and efforts. We greatly appreciate the value our open source community brings to Ocean and will always award some tokens to all great contributions! :smiley:
Once the project was reviewed and merged in the master branch, you will receive the reward. PROCN is a proto-Ocean token. Bounty hunters that earn PROCN will be able to convert them 1:1 to Ocean tokens on network launch (Ocean Token will be valued at at 0.22 EUR on network launch). Network launch is expected to happen by Mar 31, 2019. Until then PROCN will be locked and non-transferrable in the ETH wallet to which it is delivered to.