Building a new protocol on the VIZ blockchain
Let's talk about the issue of data connectivity. In a distributed ledger (DLT) built on the coordination of blocks, everything is simple. Block by block, the consistency of the general condition of the system is built. Action of the form: User 1 transferred tokens to user 2 - this is recorded in the transaction, the delegate puts together the transactions from different users to the block, referring to the previous one and sends it to the network. Other delegates confirm that everything is right with their participation.
Blocks are needed to coordinate the condition of the system: users' balances, the status of their social capital, votes in the committee for various initiatives, the status of paid subscriptions and agreements. And what about the social cohesion?
Previous article about the problems of decentralized social networks.
Who will store the user’s “like” and the comment on the photo made by another user? Who will keep in mind that the user posted the article hoping it could be found on the blockchain?
The first idea that comes to mind: maybe, delegates? But all attempts to get delegates to serve data connectivity will result in bloating and duplication of stored data. Nodes should deal with blocks and critical elements in the system, its condition, internal economy, settlements between users, cryptographic confirmation of transactions and chain integrity.
Delegates should not provide service for add-ons on the blockchain. This is a completely different task. And what if someone makes a game protocol on top of the blockchain? For example, chess? Will delegates also have to keep an eye on the integrity of the new add-on and check the progress of each party? No, there is clearly something wrong here.
The term of entity that will check the compliance of operations with the protocol already exists. This term is Oracle. Any independent participant can create any protocol, any data structure and follow it on the blockchain.
An example is a media platform (“media”). Yes, VIZ already has one additional protocol, which is based on the rules laid down in Steem. There are 2 actions in it: “content” and “delete_content” for creating content and deleting it.
There is an additional extension for the media protocol - “follow”. It has 2 actions, the first one has the same name - “follow” to subscribe to a blog, ignore or remove from the following list. The second action is “reblog”, for reposting content.
I don’t like this data structure, it seems... broken and unreasoned. But it’s the legacy of the blockchain of the Steem media platform, it simply moved from there and remains.
These 2 protocols complementing each other are implemented through the operation custom, which allows you to write any json data to the blockchain. And control.viz.world/media is the demo application and oracle for this protocol.
The application, as it provides an interface for performing custom operations on the VIZ blockchain via the “media” protocol in the form of a “content” action for creating posts or comments. And the oracle, as it monitors the appearance of such actions in the VIZ blockchain, processing and linking data in it according to the rules of the protocol. For example, if the oracle sees the action from the user reblog using the follow protocol, it checks for the presence of a post from the specified author and adds it to the activity feed of the transaction initiator.
The oracle can follow and consider all the actions of users, or maybe only some of them. For example, in a demo application, the oracle checks for a paid subscription of the initiator to the viz.world account.
Anyone can write an oracle, which will process the VIZ block by block and process one or another protocol. The protocol can be either open (about which everyone knows) or closed (the rules and mechanics of accounting are not clear).
What happens if one of the oracles adds new features to the protocol? Nothing significant, just other oracles will not consider this data.
What happens if someone sends transactions without following protocol rules? Nothing significant, just the oracles will ignore such operations.
As you can see, using the protocol can add flexibility to the blockchain. You can come up with a protocol for a digital goods store, music ratings, a register of ownership, a gameplay mechanism, a list of points for geo-positioning a hotel chain. You can put into the protocol any structures and data that allows you to store the JSON format. And, of course, the protocol may contain actions confirmed cryptographically by the initiator of the transaction, which can be considered by third-party oracles and monitor the own condition as a separate system according to its own rules.
In the sequel (link to an article about the Voice protocol on VIZ), we will discuss the possibility of creating a protocol for a decentralized social network where users themselves can act as oracles, without having to trust the intermediator as a separate site.