## 3 Prototype Description and Implementation
### Prototyping of Software Components
#### 3.4.3 IPFS Prototyping  
IPFS must be mentioned as one pivotal part of the system that has been built with the idea of providing a secure and decentralized framework for data analysis and storage. As it was mentioned before, InterPlanetary File System (IPFS) is defined by its creators as \"_a distributed system for storing and accessing files, websites, applications, and data.\"_[48]. It was first developed by [PERSON], and its progress in implementation works carries on as an open-source project. There are two major elements to consider beyond the sentence mentioned in [48]:  
1. The information or contents are sought via a web request pointing at the contents themselves rather than their location. That is to say, the HTTPS request used to obtain  
Figure 7: Launch of ArduPilot through the Navio2 controller. the resource provides the very resource itself, rather than the location (folder, directory, etc.) where it would be located. This is done so by identifying the content with a hash function output that becomes embedded in the Uniform Resource Identifier (URI) used for content requests. Therefore, every URI becomes naturally different, as every piece of content has a different hash output. 2. The nature of the web request (or as it will be shown, requests) perform to obtain the resource is different from the client/server regular one. IPFS relies on a decentralized storage of information, where there are several IPFS nodes (which can be any IPFS-enabled computer, as the demand for computational resources is relatively low) that can provide the requested piece of information. Once the resource has been obtained, it becomes available in the network for other users as well, so the resource will be shared among them rather than just obtained after the request has been completed. It is claimed that, in this way, not only resources are shared among the different parties for an easier access and increased availability of files, but also the computer used for downloading those files collaborates in distributing them, as it makes the files available to the network while keeping the anonymity of the users behind the IPFS nodes. Therefore, there are two main features typical of IPFS: (a) content addressing via embedding hash outputs in the HTTPS requests and (b) decentralization of information availability. Theoretically, it is claimed by [48] that this latter feature should provide several advantages over traditional client/server requests: it will make the web more resilient (as files are available in several computers, even there is a major issue with the one that made them public in the network), it can fight censorship in a more effective manner (shutting down a single web site with is content becomes useless, as the content can be reproduced from other IPFS nodes, and closing all of them can be an impossible task if the information becomes widespread enough) and it can increase the performance of the web, in case connectivity at the physical level is limited (like mirrors providing content, nearby nodes can be easier to reach and data can be gathered from them in an easier way). IPFS works as a Peer-to-Peer (P2P) storage network, with IPFS nodes acting as peers providing access to information and/or storing it. The network will typically locate the requested resource with the content identifier rather than its location in a file system. In addition to this (referred to as _unique identification_ via _content addressing_), there are two more technological fundamental principles of pivotal importance in IPFS: content linking via Directed Acyclic Graphs (DAGs, used for giving a unique identifier via a hash of the node's contents) and content discovery via Distributed Hash Tables (DHTs, used to find which peers are hosting the content that has been requested).