I recently listened to the radio about the evolution of altruism. The question of how the "altruism gene" stands for natural selection was discussed. This discussion led me to think about which functions should be present in modern network applications so that they “survive” in natural selection.
At first glance, it seems that the one who sacrifices himself for the sake of another, does not leave offspring and, thus, his altruistic genes should not be preserved.
Even the assumption that group selection works (the sacrifice of oneself for the group improves the survival of the group) does not save, because group selection requires very special conditions, and there is also competition within the group.
How does the altruism gene survive?
A positive factor for the survival of the altruism gene is self-sacrifice in favor of the carrier of the same or closely related gene.
As a result, it turns out that, although the individuals die, the altruism gene survives, and even better than the egoistic one, since more individuals work on it in a coordinated manner.
')
The peak of the development of altruism between unicellular organisms is a multicellular organism, in which all cells have a single genetic code, only germ cells reproduce, and the rest ensure their survival. Intercellular altruism comes to the point that planned death of cells (leukocytes, gastrointestinal tract cells) occurs regularly.
Further development along this path, for example, bees are multicellular organisms with the same genetic code, ready to sacrifice themselves for the sake of the family.The meaning of a genetic code can be defined as a recorded course of action for its carrier.
If in a certain situation the organism sacrifices itself for the sake of a relative due to genetic programming, and he, in turn, does the same, it can be represented as a network of nodes with the same software installed that implements the interaction protocol, a special case of which is self-sacrifice.
It turns out that if the code recognizes its own and special interaction with them, then all of them form a system of a higher order, which dramatically increases the efficiency of survival and promotes reproduction.
On the other hand (as mentioned in the same program), if a multicellular organism is created from cells with different genetic codes, the result is “not very”.
There are examples when single-celled, belonging to the same species, but with a different genetic code, in difficult times are combined into one fruit body. At the same time, those who form the stem of this body do not multiply.
There is a negative selection factor for altruists. It is not profitable to disappear in the leg, despite the fact that the leg is very important for the survival of the fruit body as a whole.
By natural selection appear "cunning", which fall only in the cap. As a result, as far as I understand, this method of survival as a fruit body, after the extinction of those who make up the leg, has to be “reinvented” every time. Therefore, multicellular organisms with a complex structure and can not appear from cells with different genetic code.Society
A similar approach can be applied to a society of people.
First of all, the clan structure of society becomes immediately clear.
Also, it becomes clear the impossibility of building a complex and effectively organized society.
The clans are upstairs, the clans are downstairs, and the lower ones are always trying to break up into separate people and manage their population in different ways so that there are no competitors.
Action in the interests of all mankind (getting into the "leg") leads to extinction. Action in the interests of only his clan, at least, does not lead to the development of the system as a whole.
The “fruit body” is falling apart.
It is impossible to build a large enough and complex system of people “in pure form”, the effectiveness of which would be sharply increased due to cooperation.
If we consider not only genetic, but also other types of information in a person, then the situation will be somewhat better.
Shared habits, common upbringing, an idea that captures minds, act in the same way as common DNA.
However, man is not reliable in this sense.
First, in the process of upbringing and education it is necessary to “set” ideas for a long time in consciousness, and each time individually and without a guarantee of results.
Secondly, he may forget.
Thirdly, it is affected by the underlying genetic programs of altruism only in the family circle (which is very limited) and programs of competition with all others.
Fourth, the resources of his consciousness are very limited.
It turns out that some structure of society and the division of labor are present, however, their complexity and efficiency cannot be developed sufficiently.
Throughout its history, mankind has tried to develop a code that everyone would execute. Laws were created and their implementation was monitored, training and propaganda was conducted. The code was recorded on external (in relation to man) carriers (books) and became more stable and common for all. When this worked out, the efficiency of people working together increased. But people still engaged in the execution of the code, with all the side effects described above.
Solution to the problem
Over the past decades, another place has appeared where a similar code can be written - a personal computer. And not only recorded, but executed independently, as in the processing of DNA.
Compared to using human consciousness as a carrier, this approach has an overwhelming advantage.
First, the quick installation of the application.
Secondly, the 100% coincidence of the code for all users is easily achieved.
Thirdly, everyone who has the same code is set as his own, no matter how many, and therefore there is no limit on the number of users.
Fourthly, the substantially greater possible complexity of the code and the amount of information.
Fifth, orders of magnitude higher speed.
A serious increase in efficiency is possible due to the fact that the actions of other nodes are predictably useful for the common cause. In this case, “altruism” is the provision of its resources, the action in accordance with the agreements made in advance - protocols implemented in the code and aimed at mutual support.
This suggests a hypothesis: to increase efficiency in any area, it is necessary to develop network software for it based on the principle of universal p2p cooperation.
It should be clarified that the same should not be the actual executable program code, but the supported interaction protocols.
Software system survival
Let's try to imagine what properties a software system must have in order to survive.
Survival and reproduction of the system depends on its adaptability to the environment. This environment - people, computer users.
They make decisions about the appearance or deletion of a copy on their computer based on an assessment of the efficiency of the system’s functionality, ease of use, and the ability to monitor the operation of the program.
If the program is organized according to the principle of p2p with uniform protocols, then compared with the “usual” competing programs, the efficiency increase will be very significant, so the use of new software will be really beneficial.
Bitcoin initially had one program installed on all nodes, working as a client and miner. Only then, when the network grew, did the “cell differentiation” take place. Clients and miners have become meaningful different types of nodes, although they still carry the full “genetic code”.On the other hand, attempts to create massive p2p systems, where a person will have to constantly make decisions himself, set ratings, allocate resources, evaluate results, tune, etc., in my opinion, are doomed to failure.
If the course of action is not sewn up in one protocol that is common to all, but is entrusted to a person, then there will not be a corresponding increase in efficiency (a person’s shortcomings are described above). So, there will be no interest of users in this system.
The recently introduced payment system Ripple forces the user to form his own circle of trust and monitor its relevance. This approach is an attempt to transfer risk management to end users. This is equivalent to a different "genetic code" that determines the behavior of the program, with all the ensuing consequences.
The correct implementation would be a single program code containing a system-wide and automatic risk management algorithm, transparent to users. At the same time, most users will never try to understand it, but simply launch the program.From the point of view of usability, competition will be won by those systems that, after installation, simply work and “do not ask for porridge”. They can load the processor, the network, take up space on the hard disk, but if the system does not require any “extra” from his point of view, gestures (like the settings already mentioned, rating, etc.), this is a decisive advantage to convenience.
Management and control
Here is also an analogy with biological systems.
Adaptation to the needs of users must occur with the help of "mutations" - changes in functionality, made in one place and surviving or not in natural selection. There should be many such mutation sites, which means that the system should have open source code.
Changes are the answer to the needs of users in a specific functionality or to increase its effectiveness. The part of the code that implements a specific functionality is called an extension (following the example of extensions to browsers).
Natural selection among extensions should be made by an automatic, network-wide (so that the cooperative effect is manifested) checks for compliance with user requirements, something like
this . In other words, the user does not choose the implementation, but sets the requirements for the results of its work.
From the user's point of view, the requirements for a file-sharing network can be as follows: download a gigabyte file in five minutes. By this criterion, the torrents won in natural selection.Even if the system has settings, they should have default values, as well as several modes of operation, something like: simple, advanced and expert.
The user's control over the system is that if he wanted (mostly, when he doesn’t like something), he could sort out his work with his chosen degree of immersion in the subject and change the parameters that he understands.
Extreme case - the ability to remove or prohibit the use of a particular extension.
User requirements
We looked at what the system gives the user. Now we define what the user gives the system.
In short, the resources of your computer and input information.
The natural desire of the user - just consume the functionality of the system and turn off the computer.
To avoid this, the system must remove restrictions or offer additional functionality in exchange for some actions.
Torrent trackers, especially at the beginning of their development, put forward stringent requirements for the ratio of the number of downloaded / distributed and limited downloads, in case the user did not have enough time to distribute.
In the bitcoin system, a mechanism is implemented in the form of the possibility of mining, i.e. receiving coins for the maintenance of its existence.If we consider a fairly general case, then we can formulate the following mechanism.
In the system there are (or can be created) information resources that affect the real life of the user. This could be money, a rating or a diploma, elements of a portfolio, etc.
The system offers these resources on a common transparent algorithm in exchange for some activity for the benefit of the system.
Among the necessary tasks may be:
- the implementation of transactions (as in Bitcoin);
- confirmation of the facts of the real world;
- writing a new system code;
- necessary activity in the real world, confirmed by other users;
- storing system data;
Such an approach requires the identification of the user and the history of it, and in some cases, de-anonymization.
So, what should be an effective system?
1. Distributed.
2. Without privileged nodes.
3. With a single code in all nodes.
4. Resistant to the destruction of nodes.
5. The newly installed copy should be operable immediately with the default settings.
6. No competition between nodes, only cooperation and work for the common good.
7. Open source.
8. System settings should be a formal requirements, based on which the executable code is automatically selected.
9. The system should encourage users to systematically benefit by allocating resources for this.
Practical implementations
An example of such systems can serve: bittorrent file sharing protocol, bitcoin cryptocurrency, Skype Internet telephony.
Downloading "from torrents" is possible with very high speed due to the fact that all other nodes are ready to give.
The co-operation of Bitcoin network nodes leads to unprecedented hitherto reliability and security from hacking. Just because no one can create new bitcoins. It is impossible to arrest accounts. Very cheap transactions. Easy to store. These features are significantly superior to the "normal" implementation of the same functionality.
Skype has significantly reduced communication costs.
Disadvantages of existing systems
The same Skype is not fully decentralized, i.e. has a certain set of nodes on which the software is installed, not the same as on most (for example, the leading user lists). In addition, it has a closed source code.
One of the main complaints about Bitcoin is the lack of real resources. To this, his supporters say that all other currencies are provided no more. This is true, but it is not a response to a request for similar functionality. It is not implemented either in Bitcoin or in ordinary currencies.
About Ripple written above.
What systems are needed?
Of course, those that implement the necessary user functionality. Here the field is not plowed.
You can simply poke a finger into any information process occurring in society and see that its p2p implementation will be much more effective from the standpoint of the majority (but not from the standpoint of those who are in charge of this process now).
Here are some offhand examples.
System of storage of socially significant information
The main requirement - the information should be "not cut down with an ax." The Internet generally copes with this feature, and where not, Google’s cache comes to the rescue. However, full and automatic decentralization is still far away. The information is stored either directly by people (which, as we figured out above, is inefficient), or by search engine robots on their servers (automatically, but not distributed enough).
An example of truly distributed information storage is again Bitcoin.
Interesting implementation of this idea based on Bitcoin - “
Proof of existence ”.
Real security cryptocurrency
Only real values ​​can serve as collateral. How to bind something material to a purely informational object?
Just like in ordinary life. There are cadastres of real estate, traffic police cars database and the like, right up to consignment notes.
It is necessary to store all this in a common distributed database and integrate with cryptocurrency.
When selling, the transfer of ownership must take place simultaneously with the opposite direction of the flow of money. All documents, contracts, etc., everything is the same as now, but inside the p2p network with special software. The whole history of both monetary transactions and the movement of real assets is available to all network users in the same way as the transaction history of the same bitcoin. Based on this information, the system-wide algorithm should determine the need and method of issuing or destroying money.
Documents
Why constantly carry paper with you if you can at any time verify the identity of a person by getting information from a distributed database?
Production and standards
If the path of wealth is traced in the system from the quarry to the store, then by analyzing the resources used, we can conclude about the technologies used and monetary stimulate or suppress their use. Standards are set by user requirements, and real process technology adapts to them.
Conclusion
Building distributed systems with a single code will allow humanity to make a qualitative leap in the effectiveness of its activities. In fact, this is a solution to the prisoner's dilemma in the whole society.
The process is just beginning, but the results are already visible. Let's see what will happen next.