Bitcoin, Ethereum and the Internet of People
The concepts of Bitcoin, Ethereum and the Internet of People share a lot of similar properties. But if you take a closer look, you will find some major differences. Here we explore those differences and learn how any decentralized app can take advantage of the individual services these networks provide.
What is Bitcoin?
In the beginning, Bitcoin only had a white paper, which defined a protocol to create a p2p electronic cash system. If you read that white paper, you will find the following sections:
Introduction, Transactions, Timestamp Server, Proof-of-Work, Network, Incentive, Reclaiming Disk Space, Simplified Payment Verification, Combining and Splitting Value, Privacy, Calculations, Conclusion.
In short, Bitcoin’s concept works like this: We have a server which processes transactions that run on top of a p2p network. These transactions include the accounts from and to which the coins are sent. They also include a very basic script language which is interpreted by the server. Because of this script some people called bitcoin programmable money.
Then there is a consensus mechanism called Proof-of-Work (PoW) that enables the network to agree on the status of the public ledger, storing all transaction information. This ledger is called a blockchain. There is also an incentive to run these servers which is split in two parts: 1) issuing of new coins and 2) transactions fees paid by clients.
This system has the following properties:
- Decentralized: Like the internet, the Bitcoin network is not owned by anyone in particular. Any individual can own nodes and participate, but not the whole network itself.
- Open Standard: It is possible for anyone to implement the network protocol. This protocol was defined by its anonymous founder, Satoshi Nakamoto, and was later improved by the community.
- Open System: Different wallets can interoperate between each other with ease, since they are all speaking to the same network with the bitcoin protocol. This explains why there are many different wallets on the market and they all can transfer bitcoins between each other.
- Permissionless: Anyone can run a Bitcoin network node. Anyone can use the network. Anyone can write bitcoin wallet software. All that is possible without permission of any third party.
- Dumb: It is a dumb network that pushes innovation to the edge, giving end-users control over the pace and direction of innovation.
- Shared Asset: The resulting network is a shared commons asset anyone can use. The transaction costs and time is almost nil.
- Incentivized: There is an economic incentive to run a network node and support the bitcoin network. In fact there are two: Earning transaction fees and generating newly issued coins.
Putting all these properties together at the same time is very important, since those properties allow permissionless innovation while attracting users by an economic incentive, derived from cheaper transactions as a result of disintermediation.
The most popular implementation is called “Bitcoin Core”. At the beginning it had it all together: it was a client (wallet), and also a network node, and also a transaction server. Their operators were then rewarded by the two incentives: transaction costs and mining new coins. This was the first generation blockchain based system and from there everything else evolved.
What is Ethereum?
Ethereum is a second generation blockchain system, a Bitcoin child. It inherits the same basic properties from bitcoin and generalized the concept in this way: Do you remember the script on each transaction that elevated bitcoin to a programmable money status? If you allowed the script to be an individual program of arbitrary complexity, then you would enable the system not only to process financial transactions but to process almost any type of transactions that depend on pre-defined circumstances. Ethereum called these programs smart contracts.
These changes opened the door for a whole new type of clients applications, too: They are not limited to money transactions and wallets, but can be any kind of application for different use cases. Clients can then post smart contracts to be autonomously executed by the network in a trustless execution environment (aká trustworthy). Today, with such an infrastructure in place, people are now able to create any type of decentralized application. Ethereum evolved by adding more components to their system, like some to pass messages from client to client and maintaining decentralized storage.
Ethereum inherited all properties of the bitcoin network. The project is younger than bitcoin, but it already has 1/10 of its market cap. Ethereum’s mission is to enable p2p applications by allowing clients to interact through Ethereum system components, mainly by the means of smart contracts.
What is the Internet of People?
The Internet is the global system of interconnected computer networks that use the Internet protocol suite (TCP/IP) to link devices worldwide. A network of networks. On top of the Internet lies the Web:
The World Wide Web (abbreviated “WWW” or “Web”) is an information space where documents and other web resources are identified by Uniform Resource Locators (URLs), interlinked by hypertext links, which can be accessed via the Internet. These documents are served to client applications by a web server.
The Internet of Things (IoT), is the connection of physical devices, vehicles (also referred to as “connected devices” and “smart devices”), buildings and other items — embedded with electronics, software, sensors, actuators, and network connectivity, enabling these objects to collect and exchange data. It is very well described at this post.
The Internet of People (IoP) is a network of networks of people overlayed on top the Internet. Different kinds of profiles are interconnected and each profile type inside the IoP defines a network of people who self-identify with that type of profile. All these interconnected networks form the Internet of People. IoP can be also defined as an information space constrained to a special type of document intended to store a person’s online profile and other associated resources. These documents are interlinked to define public relationships between these profiles.
The following table explains the differences between these concepts:
The IoP is also a second generation blockchain system, a bitcoin child, and Ethereum’s youngest brother. It too enables any type of p2p applications but with a different approach: Instead of generalizing bitcoin’s only use case (payment) by allowing a turing complete scripting language, IoP broke Bitcoin into pieces and then added more pieces respecting the fundamental rules of Bitcoin, allowing IoP to inherit all of Bitcoins properties plus adding more features with different use cases.
The first thing we did was to start from a fork of Bitcoin itself. Then we split it into these components:
- Token Server: This server is responsible only for processing transactions. It does not issue new tokens. This is a step forward from Bitcoin, since PoW has proven over time to centralize the network. PoW is replaced by a hybrid PoS/PoW consensus protocol. Token Servers are incentivized only by transaction fees paid by end users.
- Minting Server: Its responsibility is the issuing of tokens to the network. Reliable operators of full nodes are incentivized by receiving these newly issued tokens as well as other contributors to the IoP project voted by the community.
- Unstructured Network: This is a general purpose p2p network node creating an unstructured network. Any server in the system can run on top of it.
These first two servers are the foundation of the IoP system. This is where we differentiate ourselves from Ethereum: We do not generalize the script in transactions, so we don’t process smart contracts.
So basically, what we do is to solve the problems distributed applications have:
- How do we find other users of the same app or even of other apps in the network?
- How do we allow client apps to communicate with each other?
- Where should the app data be stored?
To solve 1.) we introduced the following components:
- Profile Server: This server is responsible to host end users’ profiles, of any type (depending on the app that uploaded the profile). Lots of different apps upload different types of profiles to the network, sometimes linking them together. This creates a network of networks of people, thus the name Internet of People. To adhere to Bitcoins basic properties, we incentivize this type of server via clients paying with minimal micropayments the Profile Servers hosting their profiles, like transaction costs we invent service handling costs. These fees cover also the next two components that must be running on the same machine.
- Content Address Network: This is needed to find content by its hash. When appropriate, Profile Servers push their profiles to this network.
- Location Based Network: This is needed to find people by their average geo-location. If you know your friend’s name and the city he lives in, that should be enough to find him.
To solve 2.) we introduced the following components:
- STUN Server: Enables two clients that are behind firewalls to connect to each other in a device to device p2p way.
- TURN Server: Relays data between two clients when a p2p connection using a STUN server is not possible.
- Latency Based Network: It is a p2p network organized by latency. It helps clients to pick up the best common node to use for example a TURN Server between them.
STUN and TURN Servers are incentivized by micropayments paid by clients in IoP tokens. This is critical to inherit all of the Bitcoin properties. Latency based network nodes run on the same machine as the TURN Servers. The incentive is the same as for the other servers since they are run by the same operator.
To solve problem 3) we diverged from our older brother and other projects that propose to store app data inside smart contracts, a decentralized storage, the cloud or so on. We believe that the most secure and private place to store data is at the end users’ own devices. This means that any IoP app (client app) stores its data on end users devices.
Certainly, this is not possible in all situations: end users devices, especially mobile ones, go offline every time you turn them off or don’t have data access. For other end users to access a user’s public data, the devices should be online at the time of the request.
To solve that, we allow client apps to attach some information about the user’s profile to the Profile Server. This way non-sensitive information can be kept online. The rest (sensitive info + info that does not need to always be available) is kept at end users’ devices. Finally we add to the Profile Server the responsibility to serve queries against that extra information, and the result is a system-wide discovery layer where anybody — users of any IoP app — can freely discover anybody else over a permissionless network either by their profile or by their extra info attached, which can be anything: Flats they are renting out, products they are selling, etc..
In an open network like this, anybody can find anybody else, but they also need to be able to interact with each other. We have to solve a whole new space of problems, like: What if I find another chat user, for example, and I want to chat with her, will I be able to do it? What if she is using a different IoP chat app than me?
To enable interoperability between IoP applications of the same type, we defined the concept of Application Services. These are specialized communication channels that can be either open or closed at end user devices. For example, all IoP chat apps using the standardized chat application service as a channel, can speak to each other, meaning that in IoP, one User can use an IoP chat app similar to Whatsapp and the other an app more similar to the Messenger. This interoperability is very powerful because it enables private networks of any kind to interact with other networks through the IoP, which is acting as the connecting tissue.
Finally the IoP concept is completed — when we add these two last components — which are very useful to clients IoP apps:
- Proximity Server: It allows some IoP apps to check in their profile at the closest proximity node, so as to enable other clients to query that node and learn about the people around them. This server is incentivized with micro-payments.
- Reputation Server: It allows people to rate other people’s profiles, so that anybody can check the reputation of anybody else on the different roles they play online. This server is incentivized with a fee paid by clients posting reputation info.
The main properties of the Internet of People
By strictly respecting blockchain properties while inheriting them, we end up having a system, called Internet of People, that is:
- Decentralized: It is a p2p decentralized network and like the internet not owned by anyone in particular.
- Open Standard: It is possible for anyone to implement the network protocol. This IoP protocol is to be defined by a standards organization called IoP Consortium in which anyone can participate.
- Open System: Different apps of the same type using the Internet of People can interoperate between each other as long as they follow the standard protocol.
- Permissionless: Anyone can run a network node. Anyone can use the network. Anyone can write apps that consume the network’s services.
- Dumb: It is a dumb network, that pushes innovation to the edge by giving end-users control over the pace and direction of innovation without third parties’ influence.
- Shared Asset: The resulting network of people is a shared asset anyone can use.
- Mobile First: The IoP allows mobile devices to connect to each other while overcoming the limitations of not being able to receive incoming TCP/IP connections which are blocked in many jurisdictions because of being behind firewalls.
- Incentivized: There are economic incentives to run every different type of server.
Finally, this table compares the properties of these 3 projects:
We expect to be releasing the whole set of IoP components during the next months. In 2017 our work should complement the one already done by Ethereum and Bitcoin.
If you were about to design a decentralized app in the early 2017, what should you use? Bitcoin, Ethereum, or the Internet of People? You could use none of them, all of them, or any combination: It depends on what your app needs.
Does your app need to handle payments in cryptocurrency?
Fine, you will need to use bitcoin, as it is the most popular cryptocurrency and chances are high, that your target audience will know about it and have access to an exchange where they can buy them.
Does your app need part of its functionality to run on a trustless execution environment?
Fine, you need smart contracts. Today the most popular and advanced platform is Ethereum, so you should think about putting some of your app logic on a smart contract. A typical example is a p2p betting app. If I were to bet with you and the bet is recorded and executed only on our phones, then — once the result of the event we are betting about is known — any one of us can cheat, just by deleting the app and not paying the winner. In this situation we need a 3rd party execution environment that runs independently of you and me. If we don’t want to trust a 3rd party company, then we need a trustless execution environment. This is the case where we need Ethereum.
Does your app needs to connect device to device in a p2p way?
Fine, you need the Internet of People. IoP helps you easily create apps that connect device to device in a p2p way without using any centralized third party for any of the following: discovery of the remote device, the signaling processes involved (agreeing on communication details), or usage of a STUN or TURN server if needed.
For example, you can do all this without going through a private search engine or telling your end users to exchange their accounts, IDs or aliases via email, chat or other unsecure trustful networks. You can connect their devices directly without using Google push notifications, or any other company’s signaling, STUN or TURN servers.
Does your app need to know who is around and the reputation of those people?
Fine, you need the Internet of People. Let’s say you are building a taxi application that is p2p IoP ready, specifically the one that passengers use but without intermediary third parties involved. What unique advantages would using IoP bring to you in contrast with Ethereum or Bitcoin?
- Re-usage of the user base: As the IoP is a shared asset as a network of people, you might not need to even build the taxi app for drivers: if someone did it before, you can just reuse the current network of drivers already in the network. We are not talking here about reusing software, but a whole shared user base created by other individuals / entrepreneurs / companies.
- Proximity Service: IoP provides a proximity service that is perfect for the taxi use case. Instead of needing to scan the profile network, your passenger app just needs to connect to the physically closest IoP Proximity Node where all taxi drivers driving around are currently checked in. One query on one node and your app has the list of all taxi drivers around your end user, listing sorted by individual price offer or further service offers — any use case for different apps is possible here.
- Reputation Service: You might want your end users to know these taxi driver’s reputation. IoP Reputation Service for People provides just that.
This way, when your end users hit the request-taxi-button, your app will go to the closest Proximity Server Node, request there a list of all taxi drivers checked in, and to the Reputation Service to get reviews for these drivers. It would filter out those below a certain threshold and order the list, for example by proximity to your end user. Then it will connect to the profile server of each driver, and request a quotation for your trip over a p2p connection to the taxi driver’s device. After receiving the answers (automated by the taxi driver apps) it would reorder the list again, probably by price and proximity, as your app wishes. Finally, it would request the ride from the first on the list, having the rest as a fallback. In short, with the help of IoP, you created a decentralized marketplace around your end user on the spot, and of taxi drivers with no affiliation to any company at all. A Free Market — meaning disintermediation and cheaper rides — over a public infrastructure (IoP) with negligible costs. This is so powerful that you might be able to disrupt big players in any industry.
Thanks to Amadeo Charlé for the editing.
If you are interested in learning more about Fermat technologies, this list might help you:
- “Fermat, the Internet of People and the Person to Person Economy.”
The Internet of People architecture dissected.
- “Introducing the Graphchain.”
The cryptographically secured data structure we use to store profiles and their relationships.
- “Introducing Redtooth”
Like Bluetooth with global range.
- “The Profile Server.”
The cornerstone software of the Internet of people.
- “The Location Based Network.”
The geo-located network that help other services to be geo-localized.
A bit about me: I am a systems architect who started his career designing and building banking systems. Later I turned into an entrepreneur. Three years ago I learned about bitcoin and decided I would use the underlying technology to fix the biggest problem we have as humans: “unlimited concentration of power”.