📜 ⬆️ ⬇️

Development on Blockchain - what will change for developers?

This article is a translation of the post by Vincent Chen and Ramon Recuero, whose goals are very similar to those that we pursue, and written for such developers that we would like to see at our events.

Introduction


If you are reading this text, we can safely assume that you are a developer who is interested in the blockchain. You are sure that you understand how the blockchain works, and you cannot wait to find out what benefits the blockchain can bring to you and your developer skills.

The purpose of our post is:
')

If you are just starting to understand this topic, we recommend that you start by reading bitcoin white paper and white paper for Ethereum .

The Paradigm Shift for Developers


Web applications benefit from the use of a network effect due to the fact that they adhere to a centralized storage of information. Built on common open protocols (for example, TCP / IP and HTTP), Yelp, Facebook and Amazon benefit from the fact that all their users and, as a result, their data are in one place. Thus, they not only gain an advantage over competitors who have less data, but also have complete control over how to monetize this data. To quote the cryptoinvestor Joel Monegro:

"The current Internet paradigm extracts maximum utility from a thick layer of applications, while a thin layer of communication protocols under it has minimal value."

Alternatively, the value distribution in the blockchain paradigm can be expressed as thick protocols and a thin layer of applications. Such a paradigm shift is possible due to the innovation - cryptographic tokens, which Albert Wenger from the venture capital firm Union Square Ventures described well:

“Historically, the only way to make money on the protocol was to create software that implements it, with a subsequent attempt to sell this software (and in recent years to host it). However, using cryptographic tokens, protocol makers can “monetize” it directly and actually get even more benefits as others create businesses based on their protocol. ”

In the past, the creators of open communication protocols for the Internet — for the most part these were DARPA researchers and volunteer contributors — had no financial incentive to develop protocols. For comparison, protocol makers today can issue tokens like Bitcoin or Ethereum, reflecting the value of these decentralized protocols.

Monegro believes that because of this paradigm shift, developers should relate differently to their applications:

“The combination of common open data with a motivation system that prevents the market situation“ the winner takes everything for himself, ”changes the approach to the application layer and creates a completely new category of companies with fundamentally different business models for the protocol level.

Ethereum


We have come to understand that in the blockchain paradigm, developers can “capture” value by creating innovative protocols. In continuation of our discussion, we will look at how blockchain technologies have evolved to the point where developers became interested in them.

Eight years ago, Bitcoin was perceived as a virtual currency that eliminates the need for centralized financial systems. Initially, the developers really tried to build applications on top of the Bitcoin blockchain, while preserving the data in the blockchain itself, however, it quickly became clear that this is a very inefficient approach (this also has Joel’s old post ). One such developer, Vitalik Buterin, was disappointed with Bitcoin's "inactivity" and its principle of avoiding risk in terms of new, developer-friendly functions. Therefore, he created his own platform, Ethereum.

While Bitcoin was originally conceived as a new means for storing financial value, Ethereum was invented to serve as a Turing-complete development environment. In Ethereum, developers write smart contracts for Solidity, and these smart contracts are executed on the Ethereum virtual machine. It allows developers to make their own fork and implement their own blockchains for different purposes. However, in order to achieve this result, it is necessary to revive a large-scale interest among developers, who were able to achieve past iterations of blockchain technologies. Today, building applications on top of existing networks like Ethereum allows developers to be interested not only in their own applications, but also in the protocols used.

Dapps, Tokens and Smart Contracts


Current blockchain developers usually create distributed applications ( dapps, short for distributed apps ) on top of existing protocols in order to solve specific business problems and satisfy end users. Thus, developers can issue tokens, or coins ( app coins ), which are used to perform specific “functions” of distributed applications, in contrast to “universal” tokens, which are used as coins for gaming machines. These functions are smart contracts that provide services to a distributed application in exchange for a digital asset, thereby eliminating the need for an intermediary to verify transactions. In other words, smart contracts promise that for one token you will receive one game at a slot machine.

As distributed application functionality becomes more and more popular, the cost of a fixed number of application coins increases as a function of supply and demand. In other words, if your gaming machine turns out to be truly memorable and begins to be in demand, then a limited number of tokens starts to grow in value. This is the principle underlying ICO ( initial coin offereing ), in which developers are engaged in collecting investments by offering koins in exchange for capital to finance their projects.

But wait, here you can ask: “Why not use the existing token instead of releasing your own application-specific?”. The fact is that specific tokens of specific distributed applications allow you to create small economies that contribute to the implementation of the main idea of ​​the application. These tokens act as limited resources that can be adjusted according to the functionality of the application. Here Ethereum comes to the rescue: with the help of Ethereum, developers can easily release their own tokens.

Early opportunities


Now that you have an understanding of the mechanism underlying the dapps, it is important to carefully consider the benefits decentralization will bring to your users. Instead of rushing to your projects and redoing them from relational databases to blockchain-alternative, we encourage you to think about the benefits of decentralization. For example, Augur creates a prediction market by involving decentralized participants in order to increase the accuracy of predictions using a common financial incentive.

At the meta level, there are also opportunities for innovation in the development stack. Many blockchain developers compare the current state of tools and frameworks with what happened on the web during the years of the Internet. When we talked about this with Ben Yu from Stream , he described it as a new feature for developers:

"Now there is an obvious task to make the blockchain more accessible to the masses, the blockchain needs to be carried out from 1994 to 2018, and this will require building a lot of technical infrastructure."

Technological innovations of the blockchain have pushed many people to the idea of ​​building a new, decentralized web stack that will be independent of centralized governments and corporations. The traditional web stack consists of building blocks like TCP / IP, DNS, databases, web servers, authentication systems and CDNs, and we are in the process of reproducing these components using basic platforms like Ethereum.

Immutability problems


Unfortunately, a technology similar to early iterations of JavaScript almost always contains problems, the most frequent of which are related to the resiliency of protocols for falsification. Developers cannot change the underlying blockchain or high-level smart contracts. There is no easy way to version a library or contracts. A recent bug in Parity, which has blocked funds of $ 150,000,000, along with other similar incidents, reminds us once again of the need to build reliable architectures.

Brandon Millman, developer at 0x , describes the security impact of blockchain's immutability as follows:

“When you do this, you have to be much more cautious than usual, because this is about the means of other people. The advantage of the blockchain paradigm is that if you securely store your private key, it is extremely difficult for other people to take your money; however, many scammers will try to force you to send the money in the wrong place in order to steal it from your wallet. ”

Developers - especially those who are accustomed to the frantic pace of the startup world - are forced to think about the trade-offs between speed and security. Ben Yu said about this:

“You have to move forward as quickly as possible, as the sphere is growing at an incredible pace. But you can not quickly do something breaking already finished, despite the fact that such is the generally accepted philosophy among developers. If you accidentally break something, you will lose millions of dollars. ”

Developing blockchain-based applications requires a completely different level of planning. Developers will not be able to roll out hotfixes or patches at night, because they will not have centralized control over the entire system. Instead, making changes to the system will often involve hard drives of the entire protocol — or, in some cases, including other sources for protocol parameters that are not so strongly tied to the blockchain.

Limitations of Ethereum


In addition to the main difficulties associated with immutability, Ethereum contains several limitations that blockchain developers may face. One of them is that Ethereum cannot access real-time data outside the blockchain.
Developers must rely on third-party data providers, called oracles , to transfer information from the outside world to smart contracts — for example, weather, random numbers, or currency rates.

Moreover, the Ethereum specification hinders computations in real time. Processing a block of transactions takes up to 15 seconds (which is downright lightning-fast compared to 10 minutes, which are required by Bitcoin). As a result, developers are forced to write asynchronous code that interacts with front-end frameworks that can work with such a state update model (for example, React).

In the case of Ethereum, you are also bound to pay for your transactions by performing operations with “gas”, which turns into Ethereum ethers. For this reason, when using the current version of Solidity, you quickly run into a transaction limit if the calculations you are trying to perform are too expensive (for example, checking for a chess mat). As a result, computing on the blockchain becomes very expensive in terms of money and network load. There are interesting alternatives (for example, Truebit ) that allow you to perform intensive calculations outside the network.

Beginning of work


At first, work with the blockchain may seem overwhelming. This is a field that extends to several areas at once: economics, game theory, computer science, finance, mathematics, cryptography, and others. This breadth of coverage is a sign that there are many different opportunities in this area to contribute to it.

Brandon Millman recommends starting with what you are interested in or what you already have some experience: “If you have been developing in JavaScript before, then there are a large number of JS libraries that you can help develop. Of course, sooner or later you will have to figure out how it all works as a whole, but you do not need to try to understand everything at once. ”

Of course, when it comes to decentralization, most of the projects on the blockchain are available as open source. If you are eager to start your acquaintance with the blockchain, the following resources will help you:


Not to mention the developer community:


If you prefer to study in practice, here are some ideas for projects:


Forward to the future


In its current state, development under the blockchain is rather messy. There are no clear frameworks and tools, similar to those used in modern web development. But why not take this as an opportunity to influence a paradigm that becomes a milestone in the development of technology?

In the case of the blockchain, you do not have to deploy centralized servers, which means there is no single point of failure. If your entire stack is decentralized, then there is no extraneous influence — your system becomes resistant to censorship, and your database is publicly verifiable. Since the new paradigm makes it possible to publicly exchange data, we understand the highest advantage of decentralized databases. This is the future to which we strive to build on the blockchain, in which information and power are spread systematically and without an intermediary.



We want to draw attention from ourselves to the Russian-speaking community of blockchain developers:


And of course, invite to our specialized conference DeCenter TokenConf about blockchain technology. This is the only conference in Russia entirely designed for the blockchain audience. All the issues related to ICO, mining, cryptocurrency and speculation are fundamentally taken out of the program . Only pure technology.

Source: https://habr.com/ru/post/349086/


All Articles