Github repo: https://github.com/Robert-H-Leonard/data-marketplace

Inspiration

After setting up a node, one must find users who need off-chain data to earn LINK. Developers who need off-chain data brought on-chain have no place to go to make their request except directly in discord. Node operators have no place to go to monetize their data on-chain. The data marketplace serves to connect the 2 parties to enable a rich on-chain data ecosystem.

What it does

A marketplace where anyone can request specific data (such as the price of 1kg of gold) they would like on-chain. Chainlink node operators can submit bids detailing the fee required for getting the data, their oracle address and the jobId that can be used to retrieve the requested data.

Once node operators submits bids to a specific request, the wallet which created the request can pick which bid to accept.

When a bid is accepted this will trigger the conditions for our automation contract to trigger the validation (attempting to fetch data from the node operator) of the oracle address and jobId in the accepted bid. If the node operator returns the correct data the request is set to validated and the oracle address, jobId and fee is displayed for anyone to be able to use.

How we built it

  1. Solidity smart contracts (Deployed on Mumbai)
  2. Chainlink Automation
  3. Chainlink node
  4. Frontend( Etherjs, Quicknode, Rainbowkit)

Smart Contracts (Polygon [Mumbai])

Challenges we ran into

Smart contract design: It was more challenging than we initially thought to figure out how our automation contract would interact with our data store contract. We eventually figured out that a custom logic automation was what we needed.

We attempted to use json validation on chain from the response of a node operators job but weren't able to figure out a good way to do it on-chain.

Accomplishments that we're proud of

Designing a marketplace to connect node operators with developers who need data on chain:

Even though it is a proof of concept we are excited we were able to design and build a marketplace app where the state was managed 100% on chain.

Designing a solution to a real need with Chainlink technology:

Once we were able to get the automation working we were able to really understand how it can be used as a tool across many different problem domains

What we learned

  • Setting up and running a chainlink node

  • Problems / application designs that chainlink automation can be used to solve

  • The difficulties of parsing json on-chain

  • How to build smart contracts that are oracle clients

  • Overall increased knowledge of solidity programming / deployment

What's next for Chainlink Data Marketplace

  • The next version of the JobRequest.sol contract isn't a complete oracle client. We want to finish implementing the oracle client so we can programmatically validate jobs submitted in bids by node operators

  • Right now the JobRequest.sol contract validated the responses from node operators on-chain. This is an issue because parsing json on-chain is very expensive and inefficient. We want to implement an external adapter to validate the json responses off-chain. This would allow us to programmatically validate much more complex data from node operators

  • In the app users requesting data can only request single fields in data they want. We want the add the ability to users requesting data to be able to specify multiple fields they want in a json response.

  • In order to incentivize node operators to be good actors we want to build a profile reputation system (similar to something like Upwork) and reward node operators that provide quality data and data avalibility

Built With

Share this project:

Updates