Blockchain Application Architecture - blockchain

I need to develop an enterprise grade permissioned based blockchain application using Hyperledger fabric. To start with, I would like to understand how I should determine number of nodes required. Basically every organization will have one peer node that will process all the transactions. Apart from this reason, do we need nodes for anything else and how many of them? From architecture perspective, what aspects I need to consider?

Each node can have some of this functions (router is a must):
router
full blockchain
wallet
miner
Since you're speaking about "one node per organization", you probably mean one "full" node per organization, meaning each organization will have a miner node, containing full blockchain locally.
The problem here is this: how can you guarantee each organization in your architecture will have the same mining power?..

Related

Corda CorDapps only on a subset of nodes

I am relatively new to Corda and stumbled upon a question that I am not able to find a clear answer to.
In my understanding a CorDapp is the entirety of Contract,State and Flows regarding a specific Use-Case.
Would it be possible to have different CorDapps running on different nodes?
For example in a network with 3 participants A,B and C where A&B need to interact with eachother and B&C need to interact with eachother with a different Use-Case. Can A&B have the CorDapp for their Use-Case running without C having it installed on their ledger?
Basically the question is, if all nodes on the network have to share all CorDapps no matter if they interact with eachother or not.
Thanks in advance
Florian
Yes, it is definitly possible and one of the main advantages, from my perspective, of a Corda. In Corda, nodes only need to have the CorDapps relevant to the them. In your example, A and B would only need to have the CorDapp for payables product, as an example, and C would only have receivables product.
In addition, there is also a possibility for all CorDapps to be installed on a single node, but access to them can be managed on the Client Service application (e.g. Spring Service that communicates with Corda Node)

In a private blockchain (for an business), how is sensitive information kept secure when each node becomes a potential leak of information?

In a permissioned blockchain, every node has a full copy of the ledger. If a node is hacked, then the whole company's sensitive data will be compromised. How is this addressed in enterprise blockchain architecture?
You can store your private data into a separate side database while your blockchain ledger/database will contain the hash value of your private data.
Different blockchain platform have different architecture for resolving this situation. So far Hyperledger Fabric is considered as the most popular blockchain platform for private and permissioned blockchain framework.
You can check the following link for better understanding:
https://medium.com/coinmonks/private-public-data-at-hyperledger-fabric-v1-4-ff9f303f4bc1

Is there any possibility to add multiple peers in Corda?

Generally, we do not have peers concepts in Corda. We always call them as nodes. How to create multiple peers (nodes) for single organization (Party) in Corda?
Technically, you can register as many peers (nodes) for the same organization. As long as, you let your counterparties know that those X509 names belong to your organization.
But, keep in mind that your peers cannot share from the database level, meaning that if peerA received some info from an external party and stored at its vault, PeerB cannot just go into peerA's vault and use it for its transactions.
That is, PeerA and PeerB are entirely different parties on the Corda level. If you want to share some information, you need to do a Flow. This is to protecting provenance and immutability of the ledger.
Looking into the future, our dev team is implementing a new accounts feature. It will be released with Corda Enterprise 5. This feature allows having multiple accounts under the same node. If you would like more information join the slack channel and ping me #http://slack.corda.net

Hyperledger-fabric blockchain

I`m really new at hyperledger-fabric and I want to build my own application based on this technology and framework also, but have some spaces in my knowledge(
What information stored in block chain of hyperledger fabric?
Since you are new to blockchain and the way it works, I recommend to understand the basic concept of that technology first. The Hyperledger Fabric Documentation provides a first overview of how it works:
http://hyperledger-fabric.readthedocs.io/en/release/blockchain.html
When you got the basic understanding of blockchains, you can setup your own development environment:
http://hyperledger-fabric.readthedocs.io/en/release/getting_started.html
With that, you can build your first network...
http://hyperledger-fabric.readthedocs.io/en/release/build_network.html
... and your first application
http://hyperledger-fabric.readthedocs.io/en/release/write_first_app.html
Blockchain is a technology that works like a ledger. In fact, it works like a distributed ledger, where every participant in the Blockchain holds a copy.'
What is ledger in Hyperledger fabric?
It is like a book that holds the record of transactions. It consists of two parts:- world state and transactions logs.
In world state, it holds the current state/value of set of ledger states.
In transaction logs, it store the transactions that occurred to reach the current state.
These transactions in transaction logs are collected inside a block that are appended to the Blockchain.

How does the consensus happen in Saas based blockchain application?

If I develop an online application using Blockchain and I have three parties(or peers) required to reach consensus then Do I need a node for each of the three participants or the one node is enough. what I am not able to understand is how I will maintain a node or nodes.
I will be maintaining the database at one location?
First understand that blockchain architecture is not as normal client-server architecture.
In normal client-server architecture, client can change entries that are stored on a centralized server. By changing master copy, whenever a user accesses a database, they will get the updated version.
This is not at all the same as with blockchain technology.
A blockchain is a mesh network of computers linked not to a central server but rather to each other. Computers in this network define and agree upon a shared state of data and adhere to certain constraints imposed upon this data. For a blockchain database, each participant maintains, calculates and updates new entries into the database. All nodes work together to ensure they are all coming to the same conclusions, providing in-built security for the network. Database are distributed across the participant nodes and transactions are immutable.
How the blockchain will maintain different nodes?
Through the use of a peer-to-peer network and a distributed timestamping server, a blockchain database is managed autonomously.
For a production network of three parties (in Hyperledger Fabric we use the term 'organizations') you would likely want to have a network of multiple (2 or more) peer nodes per organization for crash tolerance and increased resilience. You would also likely want to run these peer nodes on different host nodes in different data centers or cloud availability zones.