The Profile Server
The Profile Server is the cornerstone of the Internet of People system. A Profile Servers is a piece of the broader IoP architecture. Conceptually, it provides the following two crucial services to Person to Person Apps:
- People Discovery: Person to Person Apps need a decentralized service that enables their users to find each other. That is the core purpose of Profile Servers. Person to Person Apps host their users’ profiles on Profile Servers and by doing so, these profiles are discoverable by other Person to Person Apps.
- Help on Device to Device Connections: Once people find each other, the next problem to solve is how their devices can acquire a direct connection between them. Profile Servers have some mechanisms designed to help with that.
In order to help people discover other people, Profile Servers provide the following specific services:
- Profile Hosting: Person to Person Apps mostly run on mobile devices which are not always online. Profile Servers host end users profiles and keep them online regardless of the status of mobile devices on which Person to Person Apps are running.
- Hosted Profile Queries: Profile Servers allow any entity to request profile lists and profile info in general. Profile browsing is the natural way for end users to find other end users on the Internet of People. Especially when they need to connect to each other for the first time. Once they are connected, both parties remember which is the Profile Server of their counterparty.
- Relationship Cards: It is a data structure that contains a proof that a certain profile has a relationship with another profile. Once a relationship is established profile B signs the content of the data structure that includes the public keys of profile A and B as well as the relationship type and an expiration date. For example, Bob signs a card that says that Alice and Bob are friends and gives that card to Alice. Then Alice can use that card to prove she is Bob’s friend to anyone until the card is expired. This card might be used by Alice to endorse Bob on what a good friend he is, as well as for example to receive notifications from Bob’s Profile Server when Bob is online. The card also includes what Alice is allowed to do with it. These cards allow profile owners to link their profiles between each other, or to publicly express relationships between profiles belonging to different persons.
In order to help people interconnect their devices, the Profile Server provides the following services:
- Keep Connection to Online Devices: Profile Servers keep an open TCP/IP connection with end user devices while they are connected to the Internet. In this way Profile Servers know when people behind the hosted profiles are online and when they are not. This allows them to help two remote devices to start the process of acquiring a direct connection between them.
- Application Service Calls: Communication between end user devices is made via a concept called Application Services. Devices connected to a Profile Server signal which Application Services they are running and available to receive calls. When end users want to interact between each other using a certain app, this app will talk to a remote app through one of the available application services running locally. If this condition is met, the app can start the process of placing an application service call through a Profile Server.
Profile Servers run on top of two of the IoP p2p networks:
- Location Based Network [LOC]: A Profile Server running in one machine, will try to find a LOC NODE in the same machine. If it succeeds, the LOC NODE will provide the profile server the list of nearby LOC NODEs, the nodes in their Neighborhood. Once a Profile Server knows which LOC NODEs are in the neighborhood it then contact them and their associated Profile Servers, and shares with them some part of the data of its hosted profiles. We call that Shared Profiles. This allows all profile servers in the proximity to know that these end users exists and the very basic information about them. More detailed information will only be stored on the Profile Server each end user chooses to use as a home node. So in addition to the previous services described, Profile Servers also provide information and accept queries on Shared Profiles.
- Content Address Network [CAN]: Profile Servers also detects CAN NODEs running on the same machine and for profiles that are flagged to be indexed, they seed the content of the profile to the CAN Network through that CAN NODE. This allows end users to retrieve Profiles of other end users from any CAN NODE as long as they know the Public Key of the profile owner.
If this looks complicated it’s because it is. Beyond the technicalities the important thing to remember is that Profile Servers allow Person to Person apps to upload end users profiles to the Internet of People. These profiles contains only the necessary information needed for people to be found, the rest is kept at end user devices. Once the Profiles are uploaded, they become part of the network of people on the IoP. Once there, the same Person to Person app can make use of these profiles, allowing its user base to find each other.
When a Person to Person App has to decide how to choose a Profile Server to host their user profile they consider these two things:
- Proximity: It tries to choose between Profile Servers running in the same city where the user lives. By choosing a Profile Server in the same city it increases its security, since communications with other users in the same city or country never leave the city or country itself. But the main purpose is to allow these users to be found by other users that know little about them, sometimes only their name and the city where they live.
- Cost: It tries to choose the best deal on the market. Yes, Profile Server do charge some tiny fees in IoP tokens to provide their services. That means that Apps must choose the most convenient deal.
But the real beauty of the Internet of People is that these profiles can also be seen by other Person to Person Apps, or any App in general. Profile Servers are a public infrastructure that will answer queries to whoever requests information. So let’s see it through the lens of our Taxi system example that I used so many times before.
In my Taxi system example, we have two Person to Person Apps, one for Taxi Passengers and the other for Taxi Drivers. Let’s say the Fermat Project develop these Apps (as stated in their roadmap). Suppose these Apps are started to be used and after a period of time, 1,000 taxi drivers use the Taxi Driver App. That means that 1,000 taxi drivers are now on the Internet of People, since their profiles were uploaded by this Fermat Taxi Driver App. Something similar occurs with Taxi Passengers. Suppose there are 50,000 Taxi Passengers on the Internet of People.
Fermat will build these two Person to Person Apps as open source projects, meaning that anyone can later reuse the codebase to create new Apps based on that. Let’s say that some entrepreneur has a clever idea to offer taxi passengers some service not provided by the Fermat Taxi Passenger App. So he goes to github.com where the source code is, forks the Fermat Taxi Pessanger App and developes some features that he believes are useful for passengers. To be more specific and clear in the current example let’s imagine that he created a Female Taxi Passenger App intended for women, and will only work with Taxis which drivers are also female as well.
With the original source code, he does some rebranding -using a lot of pink color- and makes the necessary changes to the original App. Once finished he uploads his new app to the Google Play Store where mobile apps for Android are usually distributed. After spreading the word in social media, the app gets downloaded by 5,000 people.
It is a similar App to the original one in this case, but the following explanation is the same if he would have written all the code from scratch. His users now are part of the Internet of People. From then 55,000 Taxi Passenger profiles can be found at the IoP. But what is really interesting is that he didn’t need to create a Taxi Driver App, or affiliate any Taxi Drive whatsoever. His Taxi Passenger App find drivers from the current 1,000 taxi drivers already active at the IoP, filtering out all men drivers. He is effortlessly reusing not only the open source code of the Fermat Taxi Passenger App, but also the user base of a Fermat Taxi Driver App he didn’t create and he doesn’t own. The Internet of People is permissionless, meaning he did not require anyone’s permission to do that. All this is by design.
For the first time in history it is possible to reuse a user base in a permissionless way. What we are witnessing here is an alternative to private networks of people. Every App or service we use, operates a private network: Facebook, Whatsapp, LinkedIn, eBay, Uber, Airbnb, you name it. The Internet of People will not only allow these services to be ported into Person to Person Apps, but at the same time all their user bases combined will be reusable by any entrepreneur worldwide allowing them to create specialized services for their local communities. This is powerful.
Why will the network effect of the IoP be so strong? Because the IoP is not just a shared catalog of people’s profiles. It is much more than that. Behind profiles are real people connected with their own devices ready to interact with you once you find them though any Person to Person App.
Thanks to Amadeo Charlé for the editing.