This post is a little more technical than many others. I apologise in advance, however the system described could prove very significant for us all.
Some people will know I am on the maidsafe developers mailing list a lot. There I try to help out, but occasionally ask questions and get great feedback on ideas, even crazy, mental half-baked nonsense, a speciality of mine. One recent spate of ideas and suggestions on the list have led me to ponder something and this thing could be as much a game changer as a fully decentralised and private Internet of the people for the people.
The free lunch
We all love the idea of a free lunch and many jump at the chance. We all know there is no such thing, even if it looks that way a lot. Natural systems always balance and overcome overindulgence for great reason, the constant search of equilibrium is one of natures key lessons.
This proposal has many features of a free lunch and further reading, I hope, shows the push towards equilibrium. If this is the case, then the chance of success is very high.
This proposal is that in terms of network resources, we give people free access at one end and incentivise others to provide resources at the other. This free access is a consumption and production mechanism. Consumption educates and production of data provides the education materials. This balance means consumers of the data and communications are better placed to improve our system (humanity) through education. A key notion. So the value production here is in many areas, providers of information, consumers of information and providers of resources to convey the information. As people can communication, learn and collaborate more efficiently, then trade improves. Goods and services can be exchanged via a mechanism of value transfer. The most common of those is money, we convert nearly everything into money, store value there and eventually trade that value for another good or service. This is a fairly efficient mechanism (when kept very simple) and allows seemingly unrelated goods and services to be exchanged for each other via the intermediary value store (money).
The value store mechanism, in this proposal is a cryptographically secure digital asset called a safecoin. These safecoins are actually created by use of the global data infrastructure that we think of as the Internet, but re-implemented as project SAFE. This is the MaidSafe codebase and inventions given to the world with many companies and people building service applications to allow this exchange of data and knowledge to happen.
Safecoins are created by providing network resources, this is important, these miners waste no resources, instead they provide immediately valuable and importantly validatable resources. The value of this is significant to the success of a global information network. These coins are earned by resource providers, called miners. These miners will actually allow the engine to run smoothly, the providers of information will fuel the system. As the miners exchange their safecoin for other goods and services the eco system starts to complete the circle. The system then extends from a global information mechanism to a global trading mechanism, still using the global information system to facilitate transactions and trade.
So we ask ourselves, is us getting access to input information to an information system really a free lunch, or is it an essential part of the system? This part is certainly as important as the miners who give resources. The lunch is not free, but the benefits are possibly immense. The beauty here is that we all feel good being involved, the feeling of a free lunch makes us feel good, the knowledge we regain control ensures we feel empowered. An empowered society, as we know from history can achieve amazing things.
Is it something for nothing?
This is the part of the puzzle that is most confusing. So I propose we give everyone full access to the system free of charge. I say free here in terms of they need not give or buy physical resources to get access. At the moment MaidSafe checks a user has provided a resource, or purchased a resource token from a user who has excess resources. I mean the network now should no longer demand a user provides resources, but can make full use of them, from the networks perspective. It is up to application developers if they wish to charge users for their applications etc. but that is another matter.
The issue though is maybe the answer to the question, where is the value? Is the value in providing resources or is the value in what the network holds? I believe the answer is is in the future thinking view. Resources in terms of disk space, bandwidth, CPU capability etc. are decreasing in cost exponentially. These resources will tend towards zero cost over time. The data on the network, on the other hand is the wealth of our species knowledge. So where is the value? I think the value is in gathering, protecting and preserving the vast sum of all human knowledge, both private and public. The value in protecting this is vital and requires a very powerful incentive scheme. Most importantly it requires the ownership of such a scheme is absolutely in the hands of us all and equally so. Any centralised elements would prove to be detrimental. This is one of the parts of this proposal that is addressed head on. In this system we all decide to take part, where, when and as much or as little as we wish with zero control exerted by anyone over us.
It is worth noting, this proposal address two issues in one system, that is increasing value of a currency and decreasing cost of resources. This is an area not addressed by many systems today with any clarity.
Private data maybe seen as useless to the wider society, but it is generally the raw material for public data. The public data is extremely valuable. We absolutely must protect this resource. Of course farming this resource, or perhaps encouraging this resource to be available is a critical issue. If we remove all barriers to adding public data, then the flood gates open.
Application developers will use access to this data for good, the more value from this data the more valuable the application will be. Look at WikiPedia as an example of great value public data, or perhaps wikileaks or pretty much any web site out there, from rubbish to incredibly useful info, even maps, travel guides, consumer marketplaces, digital libraries, open research publications etc. There is little doubt public data is incredibly valuable.
But, as humans we will all say, you cannot give this to people, they will abuse it! I think differently though, we can have the network recognise bad unused data, it can recognise bad patterns in data streams etc. If people are storing good data that we can use, or private data that will convert eventually, then this proposal will make more sense to many.
Pay contributors directly
Physical resources are required, but from whom and why? Every desktop pc user who uses the MaidSafe network also runs a vault. This vault connects the computer to the network. This computer then provides the resources the network requires. These are resources for everyone, including you! This is an area coined as the ‘crisis of commons’ and is subject to human greed. Initially people think , I will give nothing and take everything for myself, others can give resources from me. I win, I win!
Enter cryptocurrency, in particular safecoin! These vaults that install and run automatically are very small, use resources you are not using, but more importantly they start earning you safecoin. So you get paid for providing a resource that you were not using. That seem like a good idea, your computer starts paying you back! This is an unusual proposition. You are not supplying anything you were using, instead you supply what spare resources you had, but you are earning money!
How much do you earn?
Well this is another part of the circle. your machine will earn based on a double curve graph, most likely a sigmoid curve pattern. The lower curve is less steep and represents the mining speed, below the network average (resources) and the upper curve is steeper and represents mining speed above network average. The algorithm adjusts dynamically based on supply and demand of the network. You want as many people as possible storing data, you want these people to store data with no barriers. This earns you money!
You want people to store and store freely from all types of devices, even if they have no vault as this earns you more. So yes let people switch off vaults and not use them, these people will not earn, but increase your own earning rate. This seems to me like a very natural balance and very much like a natural system. Plants that do not grow higher get less sun, they are not as successful, ants the refuse to walk far for food, get less food and grow smaller and weaker. There is no ‘crisis of the commons’ in this story, only success of the strong and those strong are the providers. They will contribute and be rewarded, bringing balance and equilibrium to the system.
Pay developers on measured value
The seemingly eternal question of the business model particularly for Open Source developers in such a system. Is it build applications to support them? or perhaps provide consulting? None of these seem to have much to do with the core skill of the developer, that is coding. What about commercial applications, how much to charge, what revenue model, how many users etc. these are all questions start-ups and existing projects must evaluate. What if the answer to both of these questions was, provide something people value and you will be automatically rewarded!
Let the network measure the value
In the MaidSafe network computers who provide resource are awarded an opportunity to request a safecoin. This mechanism can be considered in this following simplified form. (N.B. messageid is a random number on the network, it is not settable to a known mine attempt by client apps)
if (messageid % current_rank == 0)
Mine_Attempt (sign coin with vault key over to client that owns that vault)
Ignore how the mine attempt and proof works for now. This is done on data Get requests, so popular data, but mining frequency is based on stored data (current_rank). Client applications access the network through the Nfs layer. This is where the PUT GET DELETE mechanism happens. Here application developers will add a field to GET and that is a wallet address (or ID) of the client application provider. So developers build an app and insert their wallet address in the client software they build. This address will be inserted in every GET request the client makes on the network. So from the above example we multiply by a factor of 10 (devs always get 10% of safecoin). so it becomes
if (messageid % (current_rank * 10) == 0)
Mine_Attempt (sign coin with vault key for client address contained in Get request, i.e. the developer).
else if (messageid % current_rank == 0)
Mine_Attempt (sign coin with vault key over to client that owns that vault)
Can this be gamed ?
There are several issues that will pop into many minds and it is a good idea to discuss each of these individually.
- What if somebody copies an application and changes the wallet address?
- What happens if a developer creates an application purely to issue Get requests?
The answers are not all that difficult to find. Some analysis could show that:
- Copying of code is an attribute anyone can do. In some cases copy is protected in law and in other cases the protection is handled by market forces. A good application will be the one people adopt, not the one they copy and alter. Applications that attain first mover advantage or simply network effect will outlast any cheap copies that are less well thought out. Applications that do not perform well or fall behind, may in fact be forked and improved. This is a good thing for consumers to. Later we will see this is not a model where people download applications anyway, they are already installed, making copies potentially impossible.
- This is a situation the network handles itself. Multiple Get request would mean data comes from cache, thereby no earning capability will come from this. If apps randomly choose addresses to retrieve, the application will be sluggish for a start, also the network will not allow range based searches. Such activity can easily trigger a ‘no-mine‘ signal to the managers of the wallet in question. Thereby preventing any coin being created and a sluggish user experience. These applications would likely not be widely sought after.
Is this then, an automatic revenue model?
Yes, one of the shortest paragraphs I have written.
Additional advantages for application developers
As MaidSafe shares data at the file system level, applications can be shared just as easily as a web page. This means that an application is pre-installed as users wish to use them. No installers are required any more. In addition as the applications would exist on a public share, then no virus attacks on the binary is possible. This reduces developers route to market and ensures a clean and tested user experience. Many applications disappoint with poor installers or installation mechanisms. In a decentralised Internet, these issues just are not there.
Additional advantages for the system
The advantages for the MaidSafe system internally are huge. The conversion of a proof of resource token per account to a network wide proof of resource means the maintenance costs are dramatically minimised. As clients or people access the system there is no need to check what they are allowed to store in relation to what they have provided. This allows the client access managers on the network to become truly stateless. This lack of state means these nodes can handle churn at routing speed, this is very fast and in many cases sub second.
The advantages are quiet extraordinary in terms of network performance and security. Client connections can now be full routing connections. The extra personas in the vaults will still remain as full routing nodes, but the clients can take part in routing now. This will at least double the network size, making attack that much more difficult. As these managers are then numerous on the network, the concentration of clients around a close group of vaults is minimised. These manager groups can now spend time on data analysis to spot rogue connections or misbehaving clients applications. This is a significant issue.
A problem we need to solve in any case
Archive of old data, potentially removal of stale data (debatable) is an issue the network will have to tackle as time goes by. The network wide proof of resource means no or vastly reduced delete of data. This will mean data does accumulate and in some cases may be private or junk data, although we must keep in mind the real time de-duplication of even junk data (temporary data). There is no use the network spending resources looking after this data in the same manner as current valuable data. So we can look at archive personas. These are simpler than we imagine. It works like this.
Archive locations are inserted into the network, initially these will be the leading 6 bits of the 512 bit address. These archive chunks will be akin to sparse files and may contain no data to begin with.
As data is deemed redundant, i.e. not accessed over a calculated set of events (MaidSafe does not use time across the network, this is vital) then it is transferred to an archive store. These archive stores will be held in high ranked large disk space machines just as normal immutable data is. The process is as follows:
- data chunk ab764sdkl…(512) is marked for archive.
- All data managers synchronise this judgement.
- The data chunk move request is transferred to the data managers for ab764s0000…(512)
- The PmidManagers (vault managers for storing vaults) then are issued with a transfer request to archive
- The PmidManagers then request the PmidNode sends the chunks to the archive address.
- The PmidManagers are then instructed by the data managers for the archive to delete the record of the chunk.
- The store node itself will have deleted the chunk on transfer to the archive data managers.
This process can replace the management on millions of chunks to a single chunk management cost. This mechanism is fairly straightforward and requires a double targeted attack at least. This size of attack is larger than the network population.
If data is requested from the network and not found then an archive retrieval request is carried out. The data is served and this process is reversed, putting the chunk back in the general network data store once more. This process increases network efficiency and allows older data to be maintained for an extended period.
Fall back position
What if all of this did not work? Well this is unlikely, if the currency failed, then the safecoin simply becomes an internal market value token for network wide proof of resource. This will mean miners are paid in another currency for their resources. This will mean an internal market system similar to a bidding system be employed.
If resources could not keep up with demand then clients can be restricted in data storage and be forced to buy resources in a similar way as above. A simple mechanism is a safecoin == 2* network average., otherwise people can only store up to network average. The management of this type of system is in pretty much in place today. This would be winding back some code to today’s code base for client managers.