Hey everyone, welcome back to the course.
So after learning about the blockchain fundamentals and also understanding how fundamentals will be
used with blockchain architecture, let's learn about whether blockchain is a silver bullet or not.
Blockchain came into the market with a lot of promise, but now major of the companies and individuals
are taking blockchain as a silver bullet.
They are trying to employ blockchain where blockchain is not suitable at all, but blockchain is not
a solution for every problem you have.
There are certain problems where blockchain might reduce the performance compared to other solutions.
So to verify whether you should use blockchain or not, you can think of these points.
Does your solution require confidentiality requirements?
Is it having a very strict data confidentiality requirements?
Then you can utilize blockchain.
If your data doesn't require confidentiality in a strict manner, then you don't.
May require blockchain.
It's more of a solution that you are keeping your data strictly with blockchain.
If you take the data outside, then your data is unsafe.
The second thing you can think about is whether you require large amount of data storage on top of blockchain.
This is a major concern for multiple companies and individuals because blockchain cannot be used for
huge amount of data.
You cannot create a solution which take days for syncing with other nodes.
So that's why we might not be able to use blockchain for storing large amount of data.
The third thing you can think about is whether you require external services to maintain and process.
The logic with blockchain.
Blockchain is meant to be a system which is close to provide security and performance.
If you are looking for external service integration or if you want to maintain your data logic somewhere
outside of blockchain, then you might think of a different platform than the blockchain.
The fourth thing you can think about whether your business process requires frequent modifications.
Blockchain is an immutable solution.
Whatever you are storing on top of blockchain will be stored for indefinite period of time.
If your business processes require continuous updates and continuous modifications, then blockchain
might not be a good solution for you.
And finally, you also need to think about using the public blockchains within your own systems.
Public blockchains are very complex.
Why?
They are complex because they need to maintain heavy security in such a way that nobody is able to tamper
with the data.
So you need to think about how you are going to integrate such a complex solution with your system,
how you are going to employ such a complex security mechanism with your own systems and use the public
blockchains for transacting data or assets.
So these are some of the points you can think about.
And by noticing these points, you will also notice that we cannot call blockchain as a silver bullet.
We cannot employ blockchain everywhere.
You need to think about the use case or the certain aspect of the use case where you are going to employ
the blockchain.
There are some of the questions which you can ask yourself before you employ blockchain as a solution.
Let's go and see some of the different questions related to network and parameters, which you can ask
yourself before integrating with blockchain.
So starting with the network, you need to ask yourself that how many participants are going to be transacting
over the network?
As per the number of the participants, Your blockchain architecture will vary.
For example, I will give you a thumb rule for Hyperledger architecture.
Normally I take it that for every 50 users I'm going to have three peers who are going to store the
data, one validating peer and one order to maintain the blockchain.
Similarly, if your number of users increases, you might need to increase the total number of peers
and accordingly modify your architecture.
Then you also need to see whether you are trusting any participant in a system or not.
If there is a central participant on which we are maintaining the trust, then blockchain might not
be a good solution or we want to reduce or remove that participant from the system before employing
blockchain.
You might also need to see whether you want to maintain the identities of the participants.
Some of the blockchain platforms do not allow you to maintain identities.
For example, Bitcoin and Ethereum you cannot use to maintain user identities.
But by employing enterprise grade projects like Hyperledger and Corda, you will be able to employ identities
with your blockchain solution.
Then you might also need to see that how much complexity is required for network policies?
If your blockchain is going to be public, then you might require much more complex algorithm to secure
your system.
If your blockchain is only going to be private, then you might not require those heavy complex algorithms
running inside your system.
Similarly, you will also maintain the policies and according to that you will authenticate and authorize
users inside your blockchain network.
Then you can also base your questions on top of performance.
You can ask yourself that how much data needs to be stored for every transaction over the system?
Some of the blockchain platforms have certain limitations related to transaction or block data.
For example, in Bitcoin you cannot go above one MB.
Similarly, other blockchain platforms have some other limitations, so you need to see that.
What kind of limitations are introduced with the blockchain platform and how you are going to store
the data?
On top of blockchain, the second question you can ask about performance is what is your throughput
requirement?
Different blockchain platforms provide you different throughput requirements.
For example, if you use Bitcoin, that can serve you 7 to 10 transactions per second, Ethereum can
go up to 20 transactions per second, and a solution like Hyperledger might even fetch you up to 1500
transactions per second.
So you need to see that.
What kind of throughput is required with your system?
If your project doesn't require such a heavy throughput, you might use Bitcoin and Ethereum.
If you are looking for some heavy throughput or multiple transactions happening per second, then you
might go for Corda or Hyperledger.
Then you also need to see your scaling predictions that how you are going to scale your system in case
of increment of the users.
You might need to spin up multiple machines as nodes which will help you to serve multiple users.
Or you might also need to create something like a node as a service solution which will help you to
serve different users at different geographical locations.
So these questions will help you judge whether you require blockchain solution and what should be the
capacity of the blockchain solution.
Then you might also ask yourself questions on base of business logic.
Is your business logic simple?
If your business logic is quite simple, then you don't require some heavy solutions.
You might directly use Bitcoin where there is no need of provisioning smart contracts.
If your business logic is very complex, then you might go for smart contracts.
On the other hand, smart contracts are also defined with different programming languages in different
blockchain platforms.
If you are not familiar with solidity, then you might think of avoiding Ethereum as a solution.
You might go for Hyperledger, which is utilizing Java, NodeJS and go languages for creating smart
contracts.
So you need to think about the simplicity of your business logic.
Also, you can ask yourself about the privacy of the transactions, whether every one inside your blockchain
network is able to see all the transactions or you need to provide authentications for the transactions
more.
Moreover, like it's a point to point approach where the persons who are part of the transactions can
only see them.
Coda will be a helpful solution to provide you a point to point ledger based system.
You can also use Hyperledger private data and channel features to maintain privacy of the transactions.
Then you can also ask about that whether you require external integrations.
Are you looking for a system which is going to be standalone or you are looking into a system which
is going to integrate with other systems?
According to that, you need to fabricate your blockchain architecture to.
There could also be multitude of questions which can be asked related to consensus for the system.
Are you going to resolve the transactions dispute?
What is the process you are going to follow to resolve the transaction disputes?
Bitcoin has some other consensus algorithm and then some other different platforms follow some different
consensus algorithm.
You might need to use proof of work for certain problem statements, or you might go for delegated proof
of stake for certain other problem statements.
So depending upon that, you need to fabricate your blockchain architecture.
Then you can also ask yourself how you are going to validate the transactions.
Is there a standard schema which you are going to follow to validate the transactions or you are going
to enable that anyone can validate the transactions according to that, you need to fabricate that whether
you require blockchain or not.
It could be a rules based approach or a rules decision system which you can utilize for your problem
statement.
If you require very heavy validations, if you require very light validation, then you might directly
use the application code base to incur those light validations.
So according to that, you need to judge how you are going to maintain the validation of the transactions.
Then you will also answer that who is going to validate the transactions?
Is it there is a central authority available?
Who is going to validate the transactions?
Then you might not require blockchain as a solution because we will have a central in charge on which
we are dependent or is going to be a group of people who are going to validate the transactions and
you are going to provide authorization to those group of people, then you might use blockchain in such
a scenario.
Then finally, you can also ask yourself whether you require immutability in the system or not.
Are you looking to maintain and store the records for indefinite period of time?
If you are not looking for immutability, then you might not use blockchain as a solution.
If you are looking for a immutability, then blockchain might be a good solution for you.
So you can answer all these questions as per your projection problem statement.
And these will help you judge whether blockchain is suitable solution for your problem statement or
not.
So these were some of the key points which you can think about before using blockchain as a solution.
As we told before, blockchain is not a solution for everything or every problem statement.
Blockchain is not going to solve world hunger or provide peace to the whole world.
Blockchain is employable where there is a use case for employing blockchain.
You might use different technical solutions instead of blockchain to provide much more performance for
certain problem statements.
So this lecture was about setting up a thinking process for you to understand that blockchain is not
a solution for everything.
Blockchain is not a silver bullet.
Who is going to solve everything?
We can employ blockchain with multiple different technologies to solve complex problems, but still
there could be a better solution other than the blockchain.
In the next lecture we are going to go through the blockchain decision overview and we are going to
understand that how and when blockchain can be utilized at different problem statements.
If you have any query, feel free to contact us at info at weblogs.com.
Thank you.