Hey, everyone.
Welcome back to the course.
So now we have gone through different kind of views available for blockchain architecture, and we have
seen that how different views will help you to create much more effective blockchain solution.
All these views which we have discussed, can be employed with the enterprise blockchain solution and
can be used to divide different tasks and components according to which we can formulate the complete
solution.
Apart from these views and components which we have discussed till now, there are some additional concepts
and components which may also affect your enterprise blockchain architecture.
These additional concepts and components are not core to the whole system, but if they are present
with the solution, they may impact how your services will operate with blockchain and enterprise business
services.
So one of the additional concept is about blockchain permissions.
Blockchain permissions and privacy are very important as it decides that who is allowed to read the
data and who is allowed to write the data on top of blockchain.
For example, if you are doing a university credential storage, you might want to keep students as
only read the data from blockchain and the university administration as writing the data on top of blockchain.
These blockchain permissions can be from high level perspective where you directly provide the access
to ledgers, or it can also go into some granular level access specific to some key value pairs or transactions,
for example.
Coda provides a granular level of permissions where you can provide permissions to a single transaction
and nobody else will be able to see that transaction.
Similarly, you can do a ledger based permission system.
For example, in Hyperledger, you can create a channel where certain number of participants can have
access to the ledgers.
So these permissions are very important as it will decide that how the participants are going to interact
with the system.
All these permissions can be taken and divided into four major types for a blockchain architecture.
The first one is a public.
Permissioned public.
Permissioned architecture is where you require the access of a administrator to get inside the blockchain.
But the blockchain components are public to all and everybody can see what is happening throughout the
system.
Ripple is example of a public permission blockchain present.
Another type of blockchain could be private permission.
These kind of blockchain architectures could be related to an organization where the solution is private
and also permissioned.
So only the authorized parties will have the access to such blockchain solutions.
Then there is public permissionless.
This is the architecture which started the whole phenomena of blockchain.
Bitcoin is an example of public permissionless blockchain where everything is open to everyone and you
can directly join them.
Then there is private permissionless.
This could be related to a single organization where you are running a blockchain solution within the
organization, but anybody inside the organization can connect to your solution.
Apart from this, we can also create consortium of organizations who can govern the blockchain platform.
All these blockchain permissions are quite important if employed with your solution because they will
define how different components and business services are going to behave according to the permissions
given to them.
Suppose we have a service bus which is enabling outgoing connections.
Then that service bus needs to have some kind of permissions.
For example, we can provide just outgoing read permissions for the service bus so any application connected
to the service bus will only have the read permissions provided to them.
Similarly, there could some other components like key storage or certificate storage where we can have
both the read and write permissions, and according to that, the services will behave and interact
with the blockchain platform.
So blockchain permissions are quite an important component if employed with the blockchain solutions.
The second important additional blockchain concept is about blockchain storage.
Blockchain storage can be taken into two types.
The first one is ledger storage.
Ledger storage is directly the storage of information or data on top of the blockchain ledger.
Ledger Storage provisions.
Dozens of individual nodes who are distributed across the globe.
And each of this node is holding the copy of the information or ledger on which the data is being stored
across the global distribution ledger.
Storage removes the middleman.
Also, it improves the security, decreasing the cost via decentralized file storage.
But ledger storage has limitations too.
If you see the example of Bitcoin, the current block size is only one MB, so a transaction not more
than one MB could be stored within the Bitcoin block.
So such a limitation will hamper our performance and scalability needs.
If I want to store a large amount of data that has to be divided into small chunks of data and only
then it will be stored.
Moreover, as we are storing the information on each node, this will also cause a scalability issue
for us because we have to map each node.
So if a new node joins our system, then the new node has to map with the ledger, which is already
available with the old nodes and has to sync all the data across it.
So in this way we will face some performance and scalability concerns related to the ledger storage.
The second one is the database storage database.
Storage is again divided into two types.
The first one is state object storage.
This is more of like account storage related to Ethereum architecture.
In this storage, we can do crude operations for assets, participants and functions, and basically
we use state object storage for smart contracts.
We can employ databases like PostgreSQL, Leveldb or Couchdb to store the data related to state objects.
State object storage is available with blockchain solutions like Hyperledger and Coda.
The second one is external data storage.
External data storage is an alternative for ledger storage, which provisions a very huge data lake
where we can store the actual data and we can provide the hash of the data on top of the ledger.
This makes sure that the heavy amount of data is not affecting our performance and scalability concerns
over Ledger.
And still we are able to maintain security of the data.
We can employ databases like NoSQL, PostgreSQL or Leveldb for employing with external data storage.
External data storage is not directly available with some of the platforms you might need to create
your own utilities to provision external data storage.
The third type of additional blockchain concept is about blockchain interaction, even though if we
create the whole blockchain solution and provision, all the participants and assets on top of the blockchain
sustaining to our needs, still, we require a interaction capability with the blockchain solution.
There are different ways through which multiple applications and business services can run and work
with blockchain.
One of the way for interacting with blockchain is the command line interface.
Command line interface offers a interaction capability to the blockchain nodes from the local command
or terminal windows.
This is the most straightforward process of interacting with the nodes and most of the platforms offers
CLI to work with the blockchain platforms.
Command line interface can also hold scripts which can be deployed and automated to fetch or store data
on top of the blockchain.
These CLI commands can also be called upon by different business services in enterprise blockchain architect,
for example, you can employ a CLI command or a script with your keystore or search store to generate
a new key or a certificate for the new participant who has joined the network.
And this process can be automated, after which we can store the certificate or key back to the storage
services.
Also, we can create a solution where we are automating the process from the front end applications.
We can directly run the scripts to fetch some address balances, address outputs or unspent transaction
outputs.
The second interaction capability is related to admin software development kit.
Blockchain Admin SDK offers applications the administrator level of features like deployment or creation
of smart contracts, or even generation of user certificates who are joining the network.
These admin SDKs are necessary to incorporate the administrator needs and duties who is going to control
the system.
You can also use command line interface to govern the complete blockchain platform, but admin SDK can
be employed to create a front end for your administrator through where the administrator can manage
the whole blockchain platform.
The third type of interaction capability is about client SDK.
Client SDK offers applications, the user level of features like sending of transactions and calling
a function from a smart contract.
This is the SDK which will be utilized for all the user applications or client applications who are
going to interact with the blockchain platform, all the different capabilities of interacting with
the system, creating new transactions, storing data or anything related to user task will happen through
a client SDK.
Different blockchain platforms offer different kinds of SDKs.
For example, in Hyperledger you can take up the client SDKs in form of programming languages like Node.js,
Java and go in a blockchain platform.
You can have SDKs for Java and Kotlin.
So as per your blockchain architecture and your enterprise system, you will be employing the SDKs for
your business services.
So those were some of the additional concepts for architecture.
And these additional concepts are important if they are employed with your solution.
They will change how your different enterprise components are going to interact with the blockchain
project.
Now we have gone through the architecture core components and we have also seen that how different enterprise
components interact with the blockchain architecture to form the enterprise blockchain solution.
We have also discussed about how to create your own blockchain solution, and we have also taken into
the concept of creating different views for your blockchain projects.
These views will help you to analyze that, how different components are going to interact with your
system, and they will also help you in creating activity and business process diagrams for your complete
blockchain project.
Now, after defining all these interaction capabilities, views and blockchain architecture, we need
to also take care about the integration considerations for the blockchain platform.
Although we have employed different components, there are certain limitations and provisions which
should be taken into account before integrating the blockchain with your enterprise services.
In the next lecture we are going to discuss about the blockchain integration considerations.
If you have any query, feel free to contact us at info at weblogs.com.