Since you’ve come here you probably wonder if there are problems for which blockchain is not a magic solution, or maybe it is just a temporary trend, a curiosity? Blockchain technology has been used many times in the wrong way. Sometimes as buzzword to hype up the solution. In the article, I will try to show you what blockchain is, what to consider when selecting blockchain and when you should avoid it. I’m not going to discourage you from this technology. I consider blockchain as valuable for certain implementations and consequently, I work as a Blockchain Developer.
What characterizes blockchain?
If you already know what blockchain is, go to Why you don’t need blockchain?
Let’s start with the characteristics of blockchain technology. I will use here a very interesting article published by Gartner – The CIO’s Guide to Blockchain, referring to their interesting book The Real Business of Blockchain.
The authors describe blockchain through its 5 features, understanding of which is crucial to understand why blockchain is revolutionizing the market. In addition, their acquisition will allow you to refer to this disruptive technology in the context of your project / problem.
Network dispersion guarantees stability. This means that once we “accelerate” a system based on blockchain it will not be easy to stop it. The network scales with each subsequent network user and all those who maintain the so-called Full node, stores on their computers a full copy of blockchain history, which prevents accidental ;) changes in history.
Cryptography, which is used in blockchain, mainly concerns digital signatures. Transactions sent between users are signed using asymmetric encryption. Thanks to the signature you can mathematically prove that the transaction was sent by a specific network user. Each network participant has one or many sets consisting of a private key (known only to him) and a public key (everyone can know it). The first allows you to sign the message and the second allows you to verify that particular person has signed it. Remember not to share your private key with anyone – it may cause unwanted transactions to be published on your behalf.
Once saved, data on the blockchain stays on it forever. Except, in special cases where history is artificially changed with the consent of the community or organization management, we cannot undo transactions. Each user is responsible for their own actions. As a conscious participant in the network, you need to know it again and keep an eye on your private key.
Blockchain was created, among others, to exchange values securely between users. Tokenization assumes that the system operates on one or many assets, and the ownership of them is recognized on the basis of tokens held reflecting the given asset. This opens up many possibilities and in combination with Smart Contracts it becomes a powerful tool. When one introduces tokenization, transactions between users are not only an exchange of data but also of value. In addition, a blockchain with a native token provides itself a kind of “financing”.
A feature that is not obvious and is hard to measure. In fact, when talking about blockchain, we should talk about the scale of decentralization, not about whether it occurs. To describe decentralization, let me return to the first feature – distribution. It is known that the network is based on many nodes but the fundamental question is how large groups of nodes are owned by a single person / organization? That is why we can only talk about the scale of decentralization because the problem described will always occur (unless it is solved technologically). It is also worth mentioning that many projects do not have this problem by implementing a private blockchain, but such a choice is usually made for many reasons – see Practical Blockchain.
Why you ain’t gonna need blockchain?
Developing the thesis set out in the title of this article, I have prepared for you a list of assumptions that may disqualify blockchain as a solution. Analyze them point by point in relation to your project. If it turns out that your system fits into some of them, I think you don’t need blockchain. I also invite you to contact Pragmatic Coders, and we will definitely help:
No database or limited data
Let’s start with the most trivial example. If your project does not provide persistence of data or the data will be changed very rarely, then the use of blockchain does not make sense. Remember that blockchain is a kind of database that assumes continuous “build-up” of the state
System users do not directly influence the data collected in the database
Imagine you have a system that is a music library but all the content is added and administered by people from your organization. Users who listen to music have no influence on what is in the library. Blockchain will not find an application in this case.
You supervise the entire system. Other organizations are not involved in your process.
Continuing the previous example – if the system administration is not distributed to several organizations (e.g. it could be for legal reasons), it means that you have full trust in the system. Blockchain finds its application where trust ends.
Large amounts of data are stored in the system
Let’s continue music library example. This system contains a huge amount of data, persisted somewhere in the cloud. This is a perfect example for our considerations, because we should not even think about storing such data on blockchain. Even assuming that sending such data would be possible, this would make such blockchain impractical. Every node in our network would have to keep a copy of this data and block production would not be the fastest either.
Is blockchain the solution for your challenge?
You already know the strengths of blockchain technology. I have also presented you with some examples where, in my opinion, this technology will not be used. Time to sum up – I will try to give you the right mindset that you should have when you think of blockchain as a matching solution. Let’s think together if you could use them in your project and how to do it?
Blockchain as part of the business mainstream
I can see that many startups want to use blockchain, because this makes their solution perceived as innovative. Large amounts of money are spent both by governments and investors. I would like you to remember this and carefully choose the solution to your problem. Perhaps your project is a flagship example of a blockchain project, but you should consider alternatives.
If you have reached this point, then you have certainly answered yes to the above question. Time to plan how to use or implement blockchain in your project.
As responsible for the project, you should have a sense of business value that it brings. It is worth focusing on implementing such value, perhaps in the form of simple functionality, as soon as possible. This will allow you to check the design assumptions and probably acquire a group of alpha users that will improve the product development process. Getting first feedback or even starting marketing, can be very valuable in the early stages of the project.
From my own experience and those working with me, I can advise you not to immediately take the burden of own and / or private blockchain. The solution that I would consider in the first place, is to use the benefits of public blockchains such as Bitcoin, in particular Ethereum and the smart contracts present there.
Thanks to them, you can quickly and cheaply implement the first functionalities of the project and show them to the world. In addition, you don’t have to maintain a network and make it much easier for users to use your product. Perhaps at this stage it will turn out that this will be enough.
The real scenario, however, is that smart contract will not meet your requirements or publishing your data in public space completely negates this idea. If you’ve reached such conclusions, you already know how to work with blockchain. This is a valuable lesson and the time you spend taking the first steps will definitely not be lost.
Custom blockchain will be the natural direction for your project to develop. However, you must know that it will require a lot more work depending on whether you decide to design the solution from the beginning or use available implementations. At this point, it’s worth spending some time analyzing what is available on the market? Many companies that create a private blockchain use Hyperledger, while others use copies of networks such as Ethereum, Stellar, Bitcoin to create their own although public blockchain.
The aforementioned amount of work required is primarily related to maintaining the network, many tools to facilitate the use of blockchain (wallet, explorer, mining pool) as well as marketing and encouraging new users. The benefit of having your own blockchain solution will be above all greater technological capabilities – the way blockchain works will be your choice; and in the case of a private blockchain – control over who participates in the network and what data is publicly visible. However, you must decide if it will help you develop your business vision.
You should also remember that your own public network, especially in its immature stage, may be at risk. There are often network participants who want to harm it in order to achieve smaller or larger benefits. To defend against this, you need to properly design the rules of the network.
Thank you for reaching the end of this article. I hope it has helped you understand what blockchain is and when to use it. In short, let me also advertise our team at Pragmatic Coders. We have been working with blockchain for several years, which translates into extensive experience with this technology. We implemented projects with different levels of complexity, ranging from simple smart contracts in the Ethereum network through large projects based on many smart contracts and external applications to our own blockchain. I would like to invite you and your team to contact us and we will certainly help you build your business vision based on blockchain. Hardships and threats associated with this technology will be identified early enough and taken into account when designing your solution.