Internet of People
Internet of People (IoP) is an open source and decentralized technology infrastructure with an open social graph, consisting of interconnected peer-to-peer networks hosting people's profiles, reputation and identity information. It can be regarded as an information space providing a direct access channel to people, where people's profiles are identified by a public key and interlinked by profile relationship links.
The open social graph resembles a global map of people with embedded proof of how people are related. It is an open infrastructure, thus developers are free to innovate in a permission-less way. The Internet of People enables direct device-to-device communication and allows people-to-people and company-to-people interactions without going through silos. Devices pair with each other through the Internet and interact via IoP-connected applications.
The Internet of People is developed by the Fermat project.
In discrete mathematics a graph is "a structure amounting to a set of objects in which some pairs of the objects are in some sense related. The objects correspond to mathematical abstractions called vertices (also called nodes or points) and each of the related pairs of vertices is called an edge (also called an arc or line)".
The Internet of People graphchain stores information concerning both nodes (people's profiles) and edges (profile links or profile relationship links) of a graph. Nodes are identified by a public key and their information is controlled by a private key holder (profile owner). Edges represent relationships between the entities (people) controlling nodes. Certain relationships can only be added to the graphchain when they are signed by the private keys of both connected nodes.
Nodes: Each node type creates at runtime peer-to-peer (p2p) network with a different topology:
- Unstructured network nodes: They instantiate an unstructured network used to run—for example—the IoP Token Server (implemented as a blockchain).
- Content address network nodes: They implement a Distributed Hash Table (DHT) to allow services to index information. The network is implemented as a fork of the InterPlanetary File System.
- Location based network nodes: They are organized as an operator-declared Geo-location. This allows people and applications to comply with regional regulations and deal with privacy concerns.
- Latency based network nodes: They arrange themselves by latency distance, minimizing communication latency.
Servers: The IoP architecture features several servers with specific incumbencies:
- IoP token server: It is responsible for recording IoP token ownership and processing token transfer transactions, using a blockchain as an underlying data structure and technology. It runs on top of the IoP Unstructured Network.
- Minting server: It keeps track of IoP full nodes installations and runs a ranking system determining who to allocate the reward of newly minted IoP tokens. It runs on top of the IoP Content Address Network.
- Profile server: It hosts user profiles and allows users to find other users and establish relationships between each other. It also allows applications to determine which application services client devices are running, and agree how to proceed to establish a direct device-to-device connection to exchange information. The profile server runs on top of the IoP Location Based Network and also on top of the IoP Content Address Network—at the same time.
- Proximity server: Geo-localized apps check in this server in order to be found by nearby peers. These servers run on top of the IoP Location Based Network.
- Reputation server: It stores and serves reputation information of people or any of their profiles, running on top of the IoP Content Address Network.
- Stun server: It helps clients establish a p2p connection, running on top of the IoP Unstructured Network.
- Turn Server: It helps clients relay data to each other when a p2p connection is not possible, running on top of the IoP Latency Base Network.
The Profile Server is central to the Internet of People system and the piece of the broader IoP architecture where the public end of the graphchain resides. It enables the following functions of IoP-connected applications:
People discovery: Profile servers provide a decentralized service that enable p2p apps to find users. Person-to-person applications host users' profiles on profile servers rendering profiles discoverable to other IoP-connected apps.
The specific services involved in people discovery are:
- Profile hosting: IoP-connected apps run—mostly—on mobile devices, which are not always online. Profile servers host end users' profiles and keep them online regardless of the state of the devices on which IoP-connected apps run.
- Hosted profile queries: Profile servers allow entities to request profile lists and general profile information. The way for end users to find other end users on the Internet of People is by browsing profiles—especially when people are connecting for the first time. Once connected, both parties remember which the Profile Server of their counterpart is.
- Relationship cards: When a relationship is established between two profiles, each profile signs the content of a data structure that includes the public keys of the other profile. This data structures are called relationship cards, and they also contain the type of relationship and expiration date. These cards allow profile owners to link their own profiles, or to publicly express relationships between profiles belonging to different persons.
Assistance on device-to-device connections: Profile servers assist in acquiring a direct device-to-device connection once people find each other.
Location Based Network (LOC NET)
Because people live in the physical world and interact mostly with people in their vicinity, the Internet of People offers certain Geo-localized services through a Location Based Network (LOC NET). Location is actually one of the criteria for searching and finding people in the IoP.
The LOC NET is a general purpose peer-to-peer network of nodes that organizes itself based on the specific Geo-location configured by node operators. Certain IoP Servers can partner with LOC NET nodes and thus turning their services into Geo-localized services. For example, a Profile Server can partner with a LOC NET node running on the same hardware and host certain profiles at a specific location.
The IoP LOC NET implements the following concepts:
- Unrelated nodes: By default, nodes join the network as unrelated nodes. They can later become colleagues or neighbors in relation to other nodes. Interactions with unrelated nodes are performed with special care.
- Colleague nodes: In order to guarantee proper global communication, nodes get to know distant nodes beyond their vicinity. Nodes in the LOC NET benefit by avoiding routing requests or other non-profitable requests from clients. For this reason—and in order to become colleagues—nodes exchange profile information with each other.
- Neighboring nodes: Nodes know their neighborhood very well. That of neighbors is one type of relationship between nodes. LOC NET nodes may have a number of colleagues scattered around the globe, while they know all of their neighbors.
Local Network Map
Nodes in the LOC NET know only a part of the network, thus each LOC NODE has its own Local Network Map. The information within a Local Network Map overlaps with information kept by neighboring nodes. Nodes know their neighborhood well but they know less nodes as distance increases.
Local Network Maps are organized in two sections, each with different goals and properties. The Neighborhood Map maintains a comprehensive list of the closest nodes. The World Map provides a rough coverage of the rest of the world. To prevent too much data and limit node density, the World Map picks only a single node from each area.<ref name="LOCNET"/>
LOC NET Services
IoP-connected applications can use the LOC NET to contact nodes in different parts of the world. They can query a node in their neighborhood about the closest known node on a specific remote location. After a number of iterations the application will succeed in contacting the closest node to the targeted location. Through this node, applications can communicate with servers in the vicinity and use their services.<ref name="LOCNET"/>
Content Address Network (CAN NET)
The IoP Content Address Network (CAN) is an extension of the InterPlanetary File System (IPFS). The Content Address Network allows profile and reputation servers to index end user profiles and user reputation respectively.
In the IoP implementation, the CAN was extended to accept client apps. A feature to handle content seeders who do not own the content was also implemented to solve the case presented by profile servers not owning the hosted profiles. Also, an embedded naming system that allows users to retrieve content information with an immutable key even when the content and it's hash changes was also implemented.<ref name="function"/>
IoP token server
The IoP token server features a blockchain serving as the underlying technology to keep a distributed ledger of token transactions. Being a bitcoin-based blockchain designed as an electronic cash payment system, the token server uses the blockchain to deploy an application token system that can be used for transactions between software components.<ref name="CoinTelegraph20160430"/>