Inspiration
Coming into hackRPI, our team had a pretty clear idea of what we wanted to create. At the opening ceremony, we were all a bit shocked after the video about IBM's top hackathon winner, project OWL. Our idea, to a tee. Back to the drawing board.
First, we looked a little deeper into what project OWL does exactly. We learned that each of their networks are client-server models, with "PapaDucks" acting as servers, and individual ducks as clients. Additionally, we realized that their product is mainly the physical network, not software on that network for disaster survivors.
We decided that our goal was to help survivors in the event of internet and cellular service loss maintain their ability to stay informed and communicate with the people around them with already-existing technology in their pockets.
What it does
SafetyNET is a communications service run over a custom-built decentralized peer-to-peer network. Main functionality so far includes: network-wide chat and disaster relief information spreading.
Our chatroom is quite simple. Since every node in the network can connect directly to every other node, whenever the user enters a chat message, every other user receives it. This allows quick, scalable chatting.
Through an IBM cloud object storage resource, we set up a "bucket" in which we, or in the future first responders, news outlets, and disaster alert services, can store the most relevant data to disaster survivors. Then, when a machine running our p2p network detects that it can connect to the internet, it downloads this data, reconnects to the network, and sends it to all the other machines on the network. This way, even just one person getting access to the internet allows many people to receive potentially life-saving information.
How we built it
We wrote everything in python. The P2P network files run a built-in module 'socket', which acts as a door to send and receive data packets between computers.The communication between the IBM Cloud and our network goes through a module 'ibm_boto3' which allows python to extract data from the Cloud and return a string with the contents of the chosen file in the bucket.
Challenges we ran into
Multiprocessing: A large goal of our project was allowing the P2P network to multiprocess, i.e. giving each node in the network the ability to send and receive packets simultaneously. This concept is the epitome of peer-to-peer networking, making it the largest difference from a client-server network.
Accomplishments that we're proud of
Our peer to peer network had to be custom-built due to some of the requirements we had for it and the lack of high-quality modules available on python for peer to peer networking. This was quite a challenge, very enjoyable, and something we are very proud of being successful with.
Using the ibm_boto3 python module, we built a program to connect to our IBM Cloud Object Storage Resource, read off the list of buckets, go into a bucket and extract the file(s), and parse the body of the files into a string. Our IBM COS Resource is the main database for our entire project, so implementing our network to extract that data and send it through the network was a huge step.
The two main parts of our core tech are the peer-to-peer network and the ability to extract data from the IBM COS. Both of these are functional and stable, so we have deemed this project as a success.
What's next for safetyNET
We would love to implement multiprocessing to allow nodes on the network to receive and send messages and packets at the same time, which is a major quality of P2P networks. Despite this, the basic functionality of our network works. Collaboration with OWL and possibly first-responders/national services to upload data to our cloud.
Built With
- ibm-cloud-object-storage
- python
Log in or sign up for Devpost to join the conversation.