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
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.