The concept of a decentralized application was born in the era of the blockchain hype, when all the necessary tools for implementing logic appeared. And the most popular blocking with the necessary tools was Ethereum. Then there were a lot of examples of smart-contracts and examples of decentralized applications. The authors of these applications tried to shift all logic and storage of information on the blockchain. Where it was needed and where it was completely unnecessary. As a result, at it's best, all the logic was implemented using the blockchain and the UI interacted directly. Such applications were quite slow and extremely uncomfortable.
The second problem, which still remains no solutions with decentralized applications - mass. To do at least some action with dApp you need a cryptocurrency and some kind of UI (a special wallet or browser extension) - you need to sign transactions. Finding such users is still extremely difficult.
We recently launched a decentralized application – predictive.art. This is an online art gallery that allows you to release tokens for art objects to proove ownership and arrange transparent auctions. Now, we would like to share our experience.
At the design stage, we clearly decided to share what will be implemented on blockchain, and where we will use classical tools.
Blockchain we need just two things. First, we need to issue a token, possession of which confirms the right of ownership of the object of art. Transfer of tokens confirms the transfer of ownership. The blockchain is great for this - we get a ready-made, transparent, immutable decentralized transaction repository, which gives us the opportunity to unequivocally confirm ownership. Secondly, we need to hold auctions in which all participants could trust each other. Smart-contracts to no one can influence to auction results, even the organizer, are perfect for this.
For storing images, we use S3-compatible storage, which allows us not only to store large images in good resolution and create CDN. Obviously, saving even a hundred megabytes in the blockchain and then quickly searching and displaying this information for a large number of users is an impossible task for the blockchain.
The back-end is also located in the same cloud. The classic CMS, which makes it possible to store information about the authors, references to the Arts and description, as well as to keep references to the transactions by each of Arts. A similar search for this transactions would take to much time using blockchain.
UI is one of the most difficult tasks when it comes to blockchains. It can be simplified if you save the keys of users' wallets, as, for example, centralized exchanges. This is too much responsibility and danger to keep them centralized. Therefore, for the sake of convenience, we chose safety and reliability.
On the one hand, we do not ask to store any data on centralized servers, on the other hand we give the right to sign all transactions using a special browser extension, where users keep their keys safe. Yes, it is a compromise, but it is a forced compromise.
Separately, I would like to draw attention to the introduction of blockchain into a classic web project. There is an erroneous opinion that the use of blockchain technology dramatically increases project costs. As experience shows, it is not. You do not need to deploy your own blockchain node and maintain it if your dApp doesn't have a huge number of transactions that need to be immediately taken into blocks. The blockchain community maintains a ready-made infrastructure, which makes it possible to integrate using REST api. If you have had the experience of integrating with third-party applications, integration with the blockchain is not such a big problem as it may seem at first glance.
The development of smart contracts is also not a problem now. For example, the development and testing of our smart contract, which implements a full-fledged auction and consists of almost 100 lines, took about a two weeks and a half a specialist whom we separately engaged in the project. As a result, the blockchain implementation into our project took about 20% of the total labor costs. Of course there are important differences related to the time of transactions, various forks, and other. But these are all common solvable issues in any project where there are requirements for integration with third-party applications or services.
So if you have ever written applications and integrated with third-party application – creating dApp with blockchain is not much more difficult - do not be afraid to create them. If this topic is interesting, next time we gonna talk about how to properly select blockchain for your project.