The Voice protocol on the VIZ blockchain
The Voice protocol on the VIZ blockchain should have the following capabilities:
- The user is the social network himself - he himself forms the circle of his perception;
- Refusal of consecutive bypass of all blocks;
- Access and download account activity history from new records to older ones;
- Each account is an independent entity;
- Lack of censorship (freedom of speech, freedom of choice);
- Lack of mandatory public information about subscribing to an activity feed or “likes” for a specific activity (users can themselves recommend another account or activity);
- Independence from an intermediary for processing and preparing data;
- Have the ability to refer to entities in the VIZ blockchain using own addressing;
- The user sees only what he is watching, he does not see the activity of other users, if he has not subscribed to them or someone from the observed has not shared the activity of others.
Below we consider the concept of how it would be possible to implement this.
Rejecting a sequential bypass of all blocks
It would be foolish to monitor the activity of the whole world on, for example, some twitter. This is simply not possible due to technical limitations, or for reasonable reasons. What for? How will you store all this information? Why do you need an obscenel rhyme from Zimbabwe from a stranger? Why do you have to watch a photo of a turtle from an aquarium if you do not need it?
The user himself chooses who he wants to follow, what is interesting to him. In centralized social network services, an intermediary does everything for you. He will offer a few acquaintances, a community of your interests and will deliver content to you in a news feed. Will mix Itself a content by popularity. Well, an advertising will be interposed between one or another network activity. Stop tolerating this!
The time has come for decentralization, where the user himself rules! He decides who to subscribe to and who to watch. And he forms a feed of activity based on the observed objects. The user himself is a social network.
But how to achieve this? In common services, history is written sequentially. John uploaded a photo, updated his status, wrote a message about changing his job and shared a review about that cafe with a geo-tag. Social networks sequentially receive data from John and add to your “news feed”. Doesn’t it remind you something? For example, a "chain of blocks"?
And so it is - user activity is consistent. But you don’t need to explore it from the beginning of time, you can change the rules of the game and go down from new to old. All that is missing is data addressing. If John publishes a photo and writes it in block 1, and after a year he writes an article about a trip to Europe in block 10512001, you won’t go through all these blocks in a year between two events.
Of course there is a solution. You need to set up addressing activity. The only thing John need to mention in his travel article is the metadata: his previous activity was in block 1.
Blockchain node only needs to store the block number with the last account activity in order to use the addressing for the previous action to load the entire activity stream! Here's how it should look in practice:
Any user activity within the Voice protocol just should contain a link to the block number with the previous entry.
Organization of an activity feed
Imagine that such a network is already working. People write on the blockchain and link data block by block action by action. The new user decided to subscribe to a friend and recognized his VIZ account (either verbally, with a business card or a link from an article on the Internet), manually searched his account on his social network. The software, in our case, its own social network (like software) applied to one of the public nodes of the blockchain and requested data about this account, found out that the last entry under the Voice protocol was in block 1006 and requested this block. Disassembled it by itself in search of a “custom” operation under the Voice protocol and saw the “article” action. Disassembled the data in it, formed an article object for it’s user, and gave it to the user for reading. And in the background it saw a link to a past action in block 1004, and, step by step, downloaded the history in 10 steps. If the user liked the article, he can scroll through other activity of the observed account and subscribe to its activity.
A subscription will signal a personal social network to periodically monitor this account and check if a new activity has appeared (in a block higher than 1006). If an activity has appeared, download it and paste it into the general activity feed for the user.
Thus, the user himself forms who he is observing, their activity fills his feed and he can view it and form his own social network.
The user himself creates an observation feed? Great, he will not get anything unnecessary! Stop-stop. What to do with comments? If Jane suddenly left a comment on John’s article, but John is not subscribed to her, then how will John discover it? The answer may seem unusual, but it is fair enough. No way, if John does not take care of this. He can’t observe all the rest of the world. There are 2 states on the scale - either follow only what interests you or all at once.
We already observed everything at once, or rather centralized social networks did it for us. In a decentralized world, this will have to be sacrificed. And either launch an oracle, which will notify you about comments on your activity, or limit your social circle to those whom you are observing by yourself. Scientists can observe each other and the comment made by one of them to another one’s article will be noticed. But the question of the student or the rubberneck (the third person) may obviously be “missed”. If the topic is publicly important and the user who published the article wants to receive feedback from the interested public, then the oracles will help.
The oracles are omnivorous, they will monitor block by block the activity of all users and, when publicly posting as a comment, report this to the author of the article. How? Anyhow. This can be an email, a message from the bot in Telegram, or a push notification. The main thing is that the user can respond to the comment using addressing. Then his subscribers will receive this activity in the form of his response with an explicit indication and addressing of the original comment.
How to address activity on the blockchain? Of course, indicating the block number and account, whose activity we want to refer to. For example, for the user from the example above, we can refer as follows: viz://@user/1006/voice
- The transport protocol viz:// indicates where to look for information (using which software to get to it);
- @user indicates the account whose information we are looking for;
- 1006 — block number;
- voice — name of the activity protocol (if several protocols will operate on the platform of VIZ).
The user's social network will be able to parse this addressing and get to the data, showing it to the user. And he will already be able to switch to @user activity and decide whether he is interested in it or not.
Multiple Protocol Issues
This is a matter of time when more and more new protocols will appear on the VIZ network. It’s mandatory to be able to correctly refer to previous activity within a specific protocol. Otherwise, it may turn out that the activity of the “voice” protocol will refer to the activity of the “chess” protocol, for example. To simplify such reverse addressing, it is necessary to develop a plug-in for the node that will store the block number with the last activity of a particular protocol, not just the number of the last custom operation of the account (now the custom_sequence attribute is responsible for the operation counter, and custom_sequence_block_num for the block number).
After that, it will be possible to create the basis for a decentralized social network.
Custom operation with id voice, containing json indicating the action and its data. The list of actions can be expanded over time, it is enough to have an analogue of simple records without a complex structure. I propose that the first action to make is status, which will work as a message from the account (text field). Based on it, you can build an analogue, for example, of Twitter.
Mandatory field indicating the block number with the previous action (prev). If it is absent, then consider this action as the beginning of account activity (all previous activity remains in the blockchain history for oracles).
In the future, VIZ will be able to offer the outline model of a decentralized social network. Everything is in the hands of the creators of the new world! ⚒️