Inspiration

Objective Camera is inspired by Chainlink’s ideas around capturing cryptographically verified objective world data and use it in real applications. In current state, world is full of fakes and misinformation, and it takes extra time to verify the information itself, even aside from the fact that each source has own interpretation of the information. If world had a way to capture certain events objectively and then build interpretations / analysis / reportage, humanity would save lots of energy and time. For inspiration we also looked to Fake / Proof app, as an example of another attempt to build similar product, i even talked to author and we really share a vision on necessity to have such technologies spread out.

What it does

Objective Camera it’s an attempt to build an application which captures verifiable videos with trail in blockchain. We know, that in current world it is possible to craft video for almost any scenario, but it takes time: in case of deep fakes it requires a bit of polishing to hide obvious artifacts, in case of costumed performance it needs preparations, several takes as well - both things require to do editing. Thus, if system would request the video with random verifiable characteristics and assuming we can verify those characteristics and the time of capturing the video (since app connected to one of our nodes and we can use server time), it would be hard to produce fake which satisfies all requested characteristics and make it believable for human.

For Chainlink Hackathone 2022 (Fall) we choose to build PoC system, which captures tamper proof verifiable videos by request. User who requests video (lets call this user Requestor), should specify location on the map, direction of the camera and time period when video should be captured. After this, Requester can submit request via ETH compatible chain along with reward amount which will be sitting in smart contract until request execution. User who shots the video (lets call this user Reporter), can see on the map pending requests, and if Reporter is around of requested location - video can be recorded, signed by Reporter and uploaded to Objective Camera node for verification. During verification we analyze video stream, and estimate camera movement using OpenCV and Optical flow approach. Once video verified, Objective Camera node executes smart contract function (can be done by anybody essentially), which verifies video existence via Chainlink AnyApi and disburse reward.

How we built it

I started last days of October, at the first days of November project joined Andrey, crafted main APIs, set up a server and ipfs node, Elisey joined after a week of development and helped with smart contract integration to backend. Since we were in different timezones, we mostly communicated via Signal, did a very few calls to sync on big chunks of project. Project documentation (API draft, scope, ideas, tasks, useful links) was created in Notion, and we contributed to it as project went through.

Challenges we ran into

  1. Due to certain circumstances we only joined Hackathon in first days of November, thus, were limited in time, so have to rush in a last days to finish demo and submission:)
  2. Spend some time to realize a way to get multiple responses via AnyAPI. JobIDs for test net which available in public docs, didn’t work with multi param requests, so we had to come up with work around - using bytes and abi packing on backend and unpacking in contract.
  3. New stack for us - flutter / dart / fastapi / solidity / ipfs. I personally last 7 years worked on backend mostly, and a full stack experience, esp. first couple days was a bit of challenge, but I quickly picked up.
  4. Wallet connect library, which we used, apparently is using v1 wallet connect API, which kind of deprecated already and not super stable, and there is no v2 library available for dart.

Accomplishments that we're proud of

  1. As a team built the system in 2 weeks, which can run on Android/iOS and fully implements our initial agreed scenario.
  2. Discovered how the blockchain technologies can solve real world problem.

What we learned

  1. Learned a lot on web3 mechanics
    1. how to write contracts
    2. how erc20/NFT contracts look like
    3. how dapps connect to wallets
    4. how backend integrates to contracts
    5. how chainlink infrastructure works and how to integrate to it.
  2. Flutter / dart - awesome stack for multi platform development, esp. if there are supporting libraries for the case.
  3. Tried out fastapi / caddy / pydantic.

What's next for Objective Camera

  1. Build a website to search and browse videos as well as submit video requests.
  2. We want to polish system and make it production ready
    1. Implement additional security checks, such as Google Integrity API
    2. Implement video verification backend as an external adapter for Chainlink infrastructure
    3. Optimize / audit contract
    4. Migrate to Polygon / possibly move project to main net.
    5. Publish to stores
  3. Build other use cases based on capturing tamper proof videos
  4. Possibly connect Fake / Proof as second camera app to the system

Built With

Share this project:

Updates