We were inspired by the interconnectivity of networking and data transfer, so we wanted to explore different network techniques. Thus, we decided that we want to explore UDP level transfer protocols, and to such and extent, we wanted to create our own light weight protocols.

What it does

Obsidian is a decentralized peer to peer chat service that allows users to communicate without the need for an internet connection. To join the communication network, a user must first authenticate through facial recognition. Afterwards, they are free to chat, but if they leave their workstation for an extended period of time, they will be kicked from the network.

How we built it

The backbone of the communication protocol is written in C++. Through the usage of sockets and a raspberry pi, users can be added to the network as nodes. Python was used as an intermediary between the communication protocol and facial recognition software. Facial recognition was processed through the usage of the OpenCV python library. Afterwards, the processed image was sent sent to Microsoft Azure using Javascript to authenticate users.

Challenges we ran into

The original idea of the project was to build a decentralized mesh network for location restricted peer to peer file sharing; however, due to hardware restrictions, we had to pivot our idea. Furthermore, writing the codebase for a communications protocol and setting up the hardware necessary to run the program was also fairly difficult as it was mostly unexplored territory. Network projects are hard to debug, as sometimes they just malfunction without any obvious bugs or changes.

Accomplishments that we're proud of

Our facial authentication program runs well and does what it is intended. It can successfully differentiate between users and keeps track of their presence in the chat room from their camera. Furthermore, we developed a set of protocols from the ground up for peer to peer communication. In addition, this network can run independently from the internet, which makes it more dependable. Since we are using facial recognition to make it secure, it removes the issue of too much anonymity within group chats.

What we learned

Coming up with internet protocols is not easy, and the unification of all of these independent parts in this project is not easy. Azure was somewhat tough to work with too as building our own face recognition model was confusing. There were many different features and technologies to choose from. OpenCV was also challenging to get started with as we had some python numpy dependency issues.

What's next for Obsidian

For obsidian, we hope that it will gain some popularity as a novel way of communication. It is also potentially a very private method of communication. We would like to keep is as open source as possible. We also hope that we can make it fully p2p with no third party systems and perhaps implement a vote feature.

Share this project: