[IoP] Fermat presents the Internet of People App Token
Who is Fermat?
We are a group of hardworking people driven by our vision and collaborating to change the path to another future. We are pioneers, developers, inventors and dreamers, discovering new paths, trying to change the world.
We are neither a corporation or company, nor driven by any third party economical interests. We don’t believe in concentration of power because we think that in the wrong hands it could lead humanity to a catastrophic failure. We believe in freedom and the power of technology. We believe in people. We are happy to use our skills to recreate over the internet the same level of private person-to-person interactions that we have to protect outside the internet.
We have been living inside an ongoing trend towards centralization of power and control. In present time a handful of entities (giant companies or conglomerates including some states) dictate with the control over politicians and military what a huge percentage of the world population can or cannot do. In this current scenario it is not difficult to predict that fights between such interest groups are likely to happen and someday in the future some entity may try to control it all (in a devastating big fail).
Anticipating that future, we envision a world where people can freely interact electronically without unnecessary third party interferences. Both for social and commercial interactions. No spying, no censorship, no taking a cut on private transactions between individuals, no mining of self-defined private information, no unnecessary middlemen. A world where people are more important than entities like companies and states, a world where people have the choices and the means to interact directly between each other. This is the Fermat project vision and to reach this goal we first have to build the Internet of People.
What is the Internet of People?
What we need to enable now is direct device to device communication, with data being stored at end user devices and apps built to interact with each other directly over the Internet but without going through the web or requiring any service from any company or institution. We need P2P Apps that can run independent of any entity.The Internet of People is a set of P2P networks, designed to enable direct device to device P2P communication using P2P apps. The main purpose of the network is to allow my device to connect directly to your device without using any service of any company in the process of establishing the connection or during the interaction.
One of this P2P Networks is a blockchain that runs the token system needed to incentivize operators to run all the components of other P2P networks that form the Internet of People.
We call our token the IoP and its existence is what we are announcing here today.
IoP Token Fact Sheet
Name: IoP [Internet of People App Token]
Official Ticker: IoP
Blockchain Type: Fork of bitcoin 0.13.x
Max Supply: 21 M
Pre-Mining Beneficiaries: Angel Investors (2 rounds over 2 years, 650K USD total invested). Founders, early contributors received pre-mined tokens as bounties for their contributions.
Project Running Time: 27 Months. (Started Aug 2014)
Available Supply: 2,109,000 approx. minus 525,000 time locked at the blockchain level. Time locked tokens redeemable in 1, 2, 3 and 4 years counting from Oct 2016.
Target Block Reward: 1 token for miners / minters every 2 minutes. Zero to 1 token for Approved Contribution Contracts every 2 minutes (voted by token holder via the blockchain. Think DASH)
Current Block Reward: 1 token for miners every 10 minutes. There is a schedule to get to the Target Block Reward after hitting several software development milestones. You can find this schedule here under the title “Token Issuing”.
Target Consensus Mechanism: Randomized PoS / PoW hybrid. We expect to implement our own ideas on a PoS / PoW hybrid model. You can find more details here under the title “IoP Token System” .
Current Consensus Mechanism: Pre-Authorized PoW. Until we develop our own consensus mechanism we are running a regular PoW with participation in the mining restricted to developers and community local chapters. Once our consensus model is in place, permissionless mining will start.
Halving Rules: The same as bitcoin, every 4 years.
Token holders will be able to:
- Propose projects to be funded by the blockchain after being approved by token holders.
- Vote for projects to be funded by the blockchain.
- Run IoP nodes and participate in the mining reward proving their stake on IoPs.
Tokens in small quantities (micropayments) are also needed for:
- End Users need them to pay Profile Servers to host their profile at the IoP Network.
- End Users need them to pay for other IoP Network services like Proximity and Reputation.
- Funding their online identities.
- Connecting to other people.
ICO, Crowdfunding Market Value and Exchange
We are not planning an ICO. We have no plans of a crowdfunding campaign either. The project is not holding tokens. We are and want to stay independent. Our development funds were secured by our early token sales to angel investors of pre-mined tokens.
We are, however, planning to take the IoP token to the market soon – after this announcement. We expect a market value of $12 per token since that was the last price contributors received during this early days of the project.
The project is 27 months old. The first year a handful of people joined forces to forge the vision and design the system architecture. The second year more than a hundred people collaborated to prove the concept was viable. We are now at the beginning of the third year, already producing production quality code. Over the course of the next 12 months we expect to release all the Internet of People components (there are many, and it is a technically challenging project). From there we will move on to bootstrapping the P2P economy, creating tools and client-side infrastructure to easily develop device to device P2P Apps.
We are currently funded by early token buyers (angel investors). During the next 12 months we transition to a DASH-like Contribution-Voting-System paid by the blockchain with the issuing of new tokens (issuing go to miners and a significant part goes to contributors approved by token holders voting over the blockchain). We enter the market with our App Token in Nov 2016.
On our website you will find the following resources:
- Article that will explain you the Internet of People in the context of Bitcoin and Ethereum.
- Links to all available IoP wallets.
- Links to important documents like:
- Internet of People whitepaper.
- Software Requirements Specifications document.
- Fermat long term vision whitepaper.
- Internet of People presentation document.
- IoP Token Explorer can be found here.
- Internet of People’s vision presentation.
Call to Action
We recommend you reading the following documents in this order, to have a better understanding of what we are doing:
- The home page of our website. Our current featured article will give you the needed context of the project. Also you will find there links to the press coverage that can tell you how journalists interpreted our work.
- The script of our presentation. This will show you step by step in plain english what we are building and why.
- Internet of People’s vision presentation. This will give you an idea on what a world with the IoP will look like.
- The Internet of People whitepaper. It will give you some more technical details. Expect a technical overview the project.
- The Software Requirements Specifications document will get to the technical details needed to actually implement the code of each component. Also will give you some sense on where we are now and the current problems being discussed.
- The Fermat long term vision whitepaper will give you an idea of what is beyond the Internet of People.
Unless we are heavily spammed, we will keep the door open for you to comment on any of the Google docs.
We encourage you to ask questions here in this thread regarding anything you read about Fermat.
If you like our project and want to support our vision, you can either join or build a Fermat Local Chapter (with possibilities to mine if you wish) or buy IoP Tokens once they reach the market (soon).
thanks for posting our announcement here in this nice board.
Could you please correct the tag Fermet to Fermat? Thank you!
Thanx for notify, Now we change the tag
Today we present you additional Blockexplorer financed by Chapter Swiss!
WALLETS Version 3.0.0. for TESTNET
Please update ASAP
Install guide MAC
At the moment we only provide instructions to build your own copy of IoP Core. If you have absolutely no idea about programming, please follow the Laymen's Guide. If you know your way around the terminal and want to control exactly where files are placed, follow the second guide.
You will need Apple's XCode (Command Line Tools are not sufficient). For Mac OS X 10.11.5 or higher, it is provided for free via the Mac App Store. If you are on a lower Version of Mac OS X, you need to manually download Xcode from the developer homepage. For this you need to register for a free Apple developer account on http://developer.apple.com
This guide is made for people who have no experience building their own software. As the IoP wallet software is still under heavy development, difficulties may arise. Please report all issues and be patient for an actual release or an updated guide.
Update you Mac to the newest version available (at least 10.11.5)
Install the latest XCode Package from the Mac App Store and run it. Accept the License Agreement and let it install components.
Open the Application Terminal and paste the following lines one by one, pressing the return key after each one and then waiting until you are prompted for input again.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config homebrew/versions/protobuf260 --c++11 libevent qt5This will take a while.
git clone https://github.com/Fermat-ORG/... ~/Documents/iop-token
git checkout beta
./autogen.sh && export CXXFLAGS=-std=c++11 && ./configure
make && make deploy
If everything goes well, you can find the disk image
IoP Core.dmgin your Documents Folder under iop-token. Mount it by double-clicking and drag the Application
IoP Coreonto your Applications Folder.
Install XCode and run it. Accept the License Agreement and let it install components.
Install homebrew via the terminal (Terminal.app) with
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install dependencies with
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config homebrew/versions/protobuf260 --c++11 libevent qt5
This will take a while.
Use the terminal to clone the git repository to your favorite location with e.g.
git clone https://github.com/Fermat-ORG/iop-token.git ~/GitHub/iop-token
Change to this location using
cd ~/GitHub/iop-tokenor equivalent.
Make sure you are on the
git checkout beta
Add compiler flags via
make && make deploy. You might get some warnings about deprecated functions. Ignore them. If everything goes well, you can find the disk image
~/GitHub/iop-token. Mount it by double-clicking and drag the Application
IoP Coreonto your Applications Folder.
At the moment, the GUI does not show or generate QR Codes.
Your wallet and all data will be stored in
~/Library/Application Support/IoP/. To backup your wallet, copy
~/Library/Application Support/IoP/wallet.datto a secure location. Although there seem to be no problems, you should use this wallet file only with the Mac OS X version of IoP Core, as the Mac version is compiled against Berkeley DB 4 instead of Berkeley DB 5 and data files might be incompatible. To migrate your wallet between Operating Systems, we recommend using
You can use
berkeley-db(v6.1.26 as of 2016/10/08) instead of
berkeley-db4to compile IoP Core, but data files might not be fully compatible between different versions of BDB, so it is recommended to migrate wallets between versions and/or operating systems via
dumpprivkey. You also need to
./configure CPPFLAGS="-I/usr/local/Cellar/berkeley-db/6.1.26/include -O2" LDFLAGS="-L/usr/local/Cellar/berkeley-db/6.1.26/lib" --with-incompatible-bdb
Install guide Linux
Installing IoP Client
At this early stage we don't provide other packages than for Ubuntu Linux. But you can find other community packages on the community repositories
For a little help building IoP Core on OSX see INSTALL_OSX.md
We will provide Windows, MacOSX and other Packages after the beta phase, please be patient.
To install IoP the first time on Ubuntu, add new repository to
/etc/apt/sources.list.d/IoP.listwith your editor (here "nano"):
sudo nano /etc/apt/sources.list.d/IoP.list
In the editor you do this
for Ubuntu 14.04:
deb [arch=amd64] http://repo.fermat.community/ 14.04 main
for Ubuntu 16.04:
deb [arch=amd64] http://repo.fermat.community/ 16.04 main
Save and exit editor.
Import the key that is used to sign the packages:
gpg --keyserver keys.gnupg.net --recv-keys 0CC9EB6DA69C84F4
gpg -a --export A69C84F4 | sudo apt-key add -
After that you can install IoP tools as any other software package:
sudo apt-get update
sudo apt-get install iop-blockchain
After installation is complete, start the IoP wallet by running IoP-qt from the command line.
IoP-qt... and have fun! :-)
Now you should have a working IoP blockchain deployment.
If you have already installed and want to upgrade to the latest, please follow this way:
sudo apt-get update
sudo apt-get upgrade
If you run into problems with the package versions, then you could try following:
sudo apt-get remove iop-blockchain
sudo rm -fr /var/cache/apt/archives/*
sudo apt-get clean
sudo apt-get update
sudo apt-get install iop-blockchain
** if you are in trouble you should always backup your wallet.dat file!** After that empty the .IoP folder despite the wallet.dat - then start the IoP-qt again.
We don't support offically other packages (yet). Nevertheless, there are unsopported community build packages where you can even find Windows packages.
Until we have official documentation you can follow the Fermat IoP Wallet Guide:
First you have to grab the source code, you can just clone our GitHub repository. Assuming you work on Ubuntu and don't have git installed yet, you can have our initial release (tagged version beta-1.0.0) with:
sudo apt-get install git
git clone https://github.com/Fermat-ORG/...
git checkout beta
Now comes the hard part, you will have to install the whole build environment which means an awful lot of tools, libraries and headers.
sudo apt-get install g++ make automake pkg-config libtool libboost-all-dev libssl-dev libevent-dev libqrencode-dev libprotobuf-dev protobuf-compiler libqt5gui5 qttools5-dev qttools5-dev-tools
We still need the BerkeleyDB library to support wallets. The code assumes wallets built with 4.8 by default, but this version is now outdated and not accessible from the default repositories. If you insist on using backwards-compatible wallets, you have to get the library from a custom archive repository as described here https://github.com/bitcoin/bit... (look for add-apt-repository). We simply suggest using a recent libdb version instead.
sudo apt-get install libdb++-dev
Now you have to generate the build configurator files.
Now you have to generate makefiles that fit your environment. This will take a lot of time. If you are using backwards-compatible wallets with libdb4.8, you can remove the option from the following command:
Finally, you can compile everything. This will take a very, very long time. Note that if you have a lot of CPU cores in your computer, you should use the -j option to compile with multiple threads, e.g. -j8 for eight compiler threads.
If you want to run the compiled binaries directly, you can find them in directory src, e.g. src/IoPd or src/qt/IoP-qt. Otherwise, you can deploy them as usual with
Contributions Governance System Road-map
Fermat governance is divided in two halves. The first one is about the governance of mining, the second one is about the governance of contributions. Today I will focus on the second half.
Contributions Governance System
These days we are releasing version 1 of our contributions governance system. This version is good enough for the next phase of the project. Any community member can contribute using the newFermat Contribution App to submitContribution Contracts to the system. Anyone using the new Fermat Voting Appwill be able to vote if they want that contract to be executed or not. We are innovating here in many aspects since as far as I know, no other crypto-project has a governance system exactly like this one. During the next months we will collect feedback on its usage and monitor it for abuses. I expect that after some months we will upgrade it with changes based on feedback.
As we move forward towards a large decentralized organization, this version 1 will become obsolete. That is why we are already thinking about a version 2, with the following improvements:
- Reputation Based: Version 1 is about voting power based on token holdings. This is fine for the current phase of the project, but as the project and its ecosystem grow, it will start attracting the attention of bigger players with huge financial resources. Before that happens, we need to move forward to version 2, were besides token holdings, reputation is also used to compute the voting power. The most advanced research we found so far in this area was produced by Backfeed and you can learn about ithere.
- Accommodating Diversity: Version 1 fits the current stage of the project very well where even though we will have Contribution Contracts, we don’t expect hundreds of them in the very short term. But once we grow, it will be natural that the community starts separating themselves into different interest groups. Version 2 should be flexible enough to accommodate for diversity and allow these groups to thrive and self govern in their own context.
- Rewarding Spontaneous Contributions: Version 1 is more about projects. Project proposals are submitted, discussed and later voted. If approved, a Contribution Contractis executed and the payments are distributed by the blockchain towards the beneficiaries. This is fine for this phase because we are heavily under construction. At some point it will make a lot of sense to reward spontaneous contributions based on the perception of the community of their value. In this category fall bug fixes, good ideas, or any small-medium action in general that adds value to the project.
We are currently in open talks with the people at backfeed, and we might collaborate in the implementation if we end up using their protocol. In a few months they will be releasing a reference implementation of their protocol on Ethereum branded asDAOStack.
The road-map of our Contributions Governance System is:
- Deploying Token Server v.3.0.1 (IoP Core): Currently underway. Project executed by Rodrigo Acosta with the help of Matias Furszyfer.
- Deploying Android Contribution App: Version 1 is ready, waiting for the IoP Core v.3.0.1 to be a clear majority on the mining network. This app was entirely developed by Matias Furszyfer.
- Deploying Android Voting App:Version 1 is ready, waiting for the IoP Core v.3.0.1 to be a clear majority on the mining network. This app was also entirely developed by Matias Furszyfer.
- Security Audit of IoP Core: We expect to receive proposals from specialized cyber security firms to audit the work done at the blockchain level to processContribution Contracts. We understand that this is a very sensible part of the whole system and must be audited extensively.
- Professional Redesign of UX/GUI:We understand that the apps developed don’t have a sleek user experience design and user interface yet. They are just a reference implementation. We are happy to receive proposals for a professional redesign of both the user experience and user interface, together with the implementation of the changes or the implementation separated in a different project. This new redesign must accommodate the results of our Marketing Strategy Plan that is currently under development.
- Implementing iOS Contribution App v.1: This is an open project which won’t involve the current core devs. Anyone in the community can submit a project proposal for the development of this app. My recommendation is that you wait for a while until the corresponding Android app is used and real life usage feedback is incorporated on it. Also, it should come after the professional redesign of the UX/GUI.
- Implementing iOS Voting App v.1:Exactly the same situation as 4). Open project for anyone to propose.
- Android Contribution and Voting Apps v.2: In version 2 we convert both apps into IoP Apps (they upload profiles to Profile Servers and communicate with each other directly) and we eliminate the usage of a centralized forum. This project depends on the IoP SDK to be released. Open project for anyone to propose.
- iOS Contribution and Voting Apps v.2: Same as 6) with the iOS apps. Open project for anyone to propose.
Thanks to Amado Charlé for the editing.
Fermat Core Values
It is not robots,
It’s not machines,
It’s not algorithms,
It is not things,
It is not companies,
It is not states,
the most important is people,
people like you and me.
* * *
In a world where jobs are stolen,
by AI agents and automation,
we empower humans beings,
so that they can become the center.
Companies have us trapped on the web,
and private social networks of people,
even things now have their own Internet,
we fight back with the Internet of People.
* * *
State mass surveillance is widespread,
before we end up in desperation,
We propose a new idea:
device to device communication.
Some of them had grown too big,
and their power became a risk,
you just need one crazy guy,
and we might all just disappear.
* * *
We are not against companies,
we are not against states,
we understand they are important,
but sometimes, they are just a middlemen.
* * *
We give people the freedom to choose,
whether to use fiat or cryptocurrency,
whether to store it at a bank or by themselves,
that’s how we help in this story.
We give people the chance to interact Person to Person,
over electronic means,
but just like in the old days,
any business we do, stays just between you and me.
We give people sovereignty over their data,
they can sell it if they wish,
we provide a global marketplace,
they just need to sit and wait for the money to come in.
* * *
At the Internet of People we run our servers,
we store our data and run our apps.
If you are thinking about spying us,
All I can tell you is good luck with that.
* * *
If a company wants us to consume their ads,
They have to pay us.
If a company wants mine our data,
They have to pay us.
If we want to find some people,
It is free for us,
If we want to connect with someone,
It is free for us.
* * *
We stand for decentralized mining,
and a democratic blockchain,
where all stakeholders are considered,
and the rewards ease all their pains.
We don’t care about hashing power,
we don’t waste precious energy,
we don’t use specialized hardware,
our miners are humans beings.
* * *
The revolution already started,
so you’d better choose your side,
either you are with machines, things or entities,
or you are human as I am.
In our future we are the rulers,
and machines are to serve all men,
things, states and companies at our service,
as it always should have been.
* * *
We are building the Internet of People,
we are enabling the Person to Person Economy,
we will create a better future,
we don’t care if you think we are crazy.
Thanks to Amado Charlé for the editing, Jeremy Epstein for the guidance and the broader Fermat Community for the last minute review.
Mining Governance System Road-map
Today I am going to describe the official road-map of the first half of the Governance System. Fermat governance is divided into two halves. The first one is about the governance of mining, the second one is about the governance of contributions.
Mining Governance System
At the Internet of People, tokens are mined by human beings. They do it with their regular computers, or at least that is the intention. We already have a Mining Licensing scheme version 1 running and it proved to be successful so far. Each license was given to people in Fermat Local Chapters who add value to the project. No need for specialized hardware or energy waste. The mining licenses can be obtained by running local accounts of social media, running local meetups, building a local website, and so on.
Our philosophy is to be highly inclusive. In this first phase blockchain enthusiasts are the ones participating in IoP mining. Early adopters, mostly geeky people. Once we consolidate this target audience, we will move forward to the next one: researchers. After them, we will allow entrepreneurs to mine, and like this, more stakeholders will be joining.
There is a so called round-robin mechanism which allows one block to be mined by chapters, the next one by researchers, the next one by entrepreneurs, and so on, until the point where there are no more stakeholders, and its start again with chapters.
As of today, the IoP system is not mature enough to engage non technical people in mining. At the same time, the project is already demanding research work in different areas. So one way to stimulate research efforts is by opening the mining to researchers.
The research network is similar to the chapter network, but instead of chapters we have Research Labs and instead of chapter members we have the Lab Members, typically students lead by their teacher, the Lead Researcher. The requirement to qualify for mining with a Fermat Research Lab is to have a research project approved by the Contributions Governance System. That enables a Research Lab to mine for one year, independently of the duration of the approved project (with some minimum TBD). Labs that get funds from grants or similar for their Fermat / IoP research project, can profit from a higher mining cap.
The current state of our Mining Governance System is that an Administrator activates Mining Licenses of people believed to be doing a good job. With more than 70 chapters and a dozen of possible tasks to do to acquire the licenses, we are close to reaching the limits in terms of what can be managed manually. At the same time, we need a version 2 that removes the administrator and allows each chapter to audit the others. The specification of the systemneeded to accomplish this is already finished, waiting for reviews. From that document we can see that such a new version will require several different individual projects. All of them are listed below as part of the official road-map.
The road-map for our Mining Governance System is:
- Defining Interfaces: This project is needed to define the interfaces between the three major components that are needed as part of version 2 of the Mining Governance System:
- Minting Server (IoP Core): Our current Minting Server needs to be upgraded in order to understand who can mine at any moment based on a totally new set of rules.
- Chapter Network State Machine: A virtual layer on top of the blockchain that tracks all chapter activities in order to recreate the current state of all Mining Licences, automatically resolving potential blockchain forks.
- Fermat Chapter App: An Android / iOS mobile app to manage chapters, their membership and licenses.
2. Sequence of Projects and Milestones on the Minting Server (IoP Core):
- Round-Robin Mechanism: This project defines and implements the round-robin mechanism that will enable the mining to be done by different networks of people, each block minted alternately. The mechanism will automatically activate a new stakeholder type once it recognizes license activations for that stakeholder made by the administrator. This means that each new stakeholder type will start with a system managed by an administrator, like today’s Chapter Network, until the automation of their network is implemented.
- Research Network Mining (version 1): This is not a project but a milestone. It is achieved when we start allowing researchers to mine IoP tokens. Initially they would enter into a very similar scheme were chapters are today, where an administrator would activate the mining licenses of the first set of research labs.
- Chapter Network Mining (version 2): This project will replace the current scheme where the Minting Server reads the blockchain to calculate who can mine and who can not, and it will interpret the state of Mining Licenses from the Chapter Network State Machine.
- Business Network Mining (version 1): Same situation here, this is a milestone hit once we allow entrepreneurs to mine.
- Business Network Mining (version 2): This project implements the necessary changes to interpret the state of Mining Licences from the corresponding State Machine.
3. Implementing the Chapter Network State Machine: We are analyzing the possibility to adapt Blockstack to be used with our blockchain and provide Fermat with three of the four layers they define as:
- Blockchain Layer: We already have this, and it should integrate well since they are working with the bitcoin blockchain.
- Virtualchain Layer: This is whereState Machines run, they have only one so far, for recording a unique name on a blockchain. We might need that as the set of services the Internet of People provides to Person to Person apps, but what we currently need is the possibility to create a second State Machine, in this case to keep the state of the mining licenses, endorsements between chapters and their members, etc.
- Routing Layer: I am not sure we need this right now, it will be determined by a deeper analysis, but for sure is needed for the use case of recording names on the blockchain.
- Storage Layer: Same as before.
4. Developing the Fermat Chapter App: This is the app that would replace the current version 1 of the Mining Governance System and allow us to move forward to version 2. This app will be developed both for Android and iOS at the same time. Note that this project has as a dependency the IoP SDK version 1, which includes connectivity to PRO SRV, CAN NET, LOC NET, STN SRV and TRN SRV. The IoP SDK version 1 is part of a different road-map.
5. Designing the Research Network State Machine and App: This analysis & design project is needed to define how this is going to work. It will be executed after gathering on the field experience about Fermat Research Labs. It includes the interfaces between these two components and between the State Machine and the Minting Server.
6. Implement the Research Network State Machine: We will add to the Virtualchain Layer another State Machine. At this point we will already have experience doing this, so we should expect this not to be so difficult.
7. Implement the Research Network App: This will likely be an adapted fork of the Fermat Chapter App. We will initiate this project after polishing the Fermat Chapter App with feedback of usage collected on the field.
8. Designing the Business Network State Machine and App: This network is made up of entrepreneurs or business people in general connecting their Apps to the Internet of People. The idea is that whoever brings critical mass to the project, should be able to get rewards by mining IoP tokens. The mining cap in this case must be proportional to the active users they are adding to the Internet of People.
9. Implement the Business Network State Machine: We will add to the Virtualchain Layer yet another State Machine. This state machine will have to compute the active users of each App connected and by doing so, calculate the mining cap and state of each Mining License.
10. Implement the Business Network App: This will allow each entrepreneur / businessman / app developer to manage their mining licenses for the apps they connect to the IoP.
I leave this road-map up to here for now, although I know it continues. We are open to receive Contribution Contracts proposals on any of these projects that are already in the global strategy.
Thanks to Amado Charlé for the editing.
Profile Server Road-map
Currently we are alpha-releasing the Profile Server. It’s technical documentation can be find here.
Here I present the list of features, security improvements and optimizations that can be done on the current implementation of the Profile Server. We open all these project ideas to the Fermat community to propose these features through our Contributions Governance System. The following list was taken from here. Meanwhile we will focus on the next server to design and implement: the Proximity Server.
So I say it again: if you are a dev, dev team or dev company you can submit any of these projects to our Contributions Governance System and get paid in IoPs!
Features Not Yet Implemented
Some of the following features are going to be implemented, others will be considered.
Network Simulator LOC Support
The network simulator is a tool that allows developers to run multiple instances of the profile server on a single machine and create a testing network, in which various scenarios can be analyzed. Currently, the network simulator implements a dummy LOC server, which simulates a basic functionality of a LOC server. We need to improve the network simulator to support real LOC software, to help us testing LOC functionality within the simulator as well as the integration between the profile server and the LOC server.
Multimachine Network Simulator Support
Currently, the network simulator can only run on a single machine, which limits the size of the simulated network because of the simulator’s demands on hardware resources. It may be possible to extend the functionality of the network simulator to support execution on multiple machines, which would allow it to simulate large network environments on just a couple of testing servers.
Profile Changes Notification
Some end user IoP applications may be interested in being notified every time a certain profile is updated on its profile server. Currently, there is no system of offline messages, so it is expected that the notification could only be provided if the interested application has an open connection to the profile server that hosts the monitored profile. However, such an implementation could significantly increase the resources consumed by the profile server, if the number of watchers is high.
Hosting Plans and Invoicing
Currently, the profile server does not charge anything for its services and everyone is free to register and use it, unless the profile server hits its configured limits. A system of hosting plans is intended to limit the free use of the profile server by introducing various quotas on each functionality the profile server offers. It is expected that each profile server will offer a very limited free hosting plan that will allow new network users to join the network free of charge, as well as to offer paid plans for users that are able to provide monthly payments.
Invoicing is the intended system of payment requests delivered to the clients to ask them to pay for the profile server services, to its wallet.
To prevent losing an access to the network when a client’s hosting profile server is not available, a system of backup nodes can be created. A backup node will contain up to date profile information about the client, but it will not be used until the client requests it due to problems with its primary hosting server. The backup node will then replace the role of the client’s hosting server until its primary server is available again. In case of permanent unavailability of the primary server, the client is expected to fully migrate to the backup server, or another profile server.
A special interface for the administrator of the profile server should be implemented to allow easier management and change of profile server settings without a need to restart it, as well as to provide various statistics about the profile server’s operations and performances.
Regression Test Mode
Once the admin interface is ready, we can implement a regression test mode that will allow developers to create new kinds of tests of the profile server.
DoS and Sybil Attack using Neighborhood Initialization Process
Currently, there is no verification whether an incoming profile server that requests uploading its profile database is authorized to do so. Mitigation of this problem depends on design decisions to be made about the final definition of the server neighborhood.
Regardless of the neighborhood design and definitions, there is also the possibility of spawning a large number of servers within a certain location. Mitigation of this should probably be done on LOC level with IP subnet based limitation.
Also currently, there is no limit on a number of attempts for the Neighborhood Initialization Process if it fails. This allows the attacker to perform a DoS attack. To mitigate this issue, we can introduce IP based limits.
DoS Attack Using Search Queries, Profile Updates, and Other Requests
Currently, there is no limit on a number of search queries that a single identity can send to the profile server. Sending a search query is a cheap operation for the client compared to the amount of work that the server is potentially doing.
Similarly, there are currently no limits on other requests such as profile updates.
To mitigate this issue, we would need to introduce identity based or IP based limits on search queries and other requests.
Sybil Attack on Profile Hosting Registration
Currently, there is no limit on a number of profiles that a single IP address can register on the server. A single attacker can occupy all free slots the profile server has for hosting identities.
To mitigate this issue, we would need to introduce IP based limits on hosting registrations.
Updates Between Neighbors
Neighbor servers share their profile databases and keep their information synchronized. The initial database upload to a neighbor is efficient, but individual updates that follow are somehow inefficient as we currently use a new TCP TLS connection to the target neighbor, verify our identity and send a single update of a single profile even if there are more updates to be done.
As the number of neighbors is potentially high and the frequency of changes in the hosted profiles is low, reusing a connection does not seem to be a good option unless it is used by both peers. Such optimizations should not be done until the final design of the server neighborhood is decided because, it is currently uncertain whether any optimization is needed.
Making batch updates instead of individual updates would save resources but it would potentially affect the UX as the profile search feature would greatly suffer.
Luis Fernando Molina