A couple of questions on channel:
Characteristics of a channel:
besides partition does the channel have the characteristic of hierarchy - meaning, if I have 3 channels can I arrange them into a hierarchy structure, channel a contains channel b and channel b contains c?
Management of channel:
sort of related to above question;
what is the best practice to manage all channels under one peer/user,such as, CRUD? In my mind this concept of channel seems to be a great idea but could possibly become out of control quickly - the impact on scalability, performance, storage and data segregation of the network.
Is there any details around the roadmap of how to manage the channel in both the micro and macro sense?
These are Hyperledger Fabric questions, as Composer does not manage channels (you deploy a Composer business network archive TO an existing channel).
Channels are essentially separate ledgers. They allow you to manage a single Fabric, that supports multiple ledgers across different subsets of your peers.
Related
Lets say there are 100 banks on the street, they trade each other but they also don't want to share the data with the other banks who is not the part of the transaction. so basically in that case they will have to create a dedicated channel for each possible combination, so assuming 100 banks each trading with each other 100 x 9 = 900. If i put them in same channel they will get to see the data for the transaction they are not part of, so only option i have left is to keep them on a separate channel but is there any scalability issue with having too many participants in the network. how is really going to scale in Hyperledger Fabric or How can we manage this type of use case in Hyperledger Fabric ?
Seems like you duplicate the question
I have answered in your previous question
How to prevent third party to seeing the data on same channel in Hyperledger Fabric?
There is one very important feature provided by the Hyper-ledger fabric for scenarios like these. Its called Private Data. A set of Organizations in a consortium can hide the data from other organizations using this feature, and avoid creating a new channel altogether.
Please see below link for detailed explanation. It has everything , including an use case which will help in understanding the practical usage of private data.
Private Data in Hyperledger fabric
I am little confused bw fabric and sawtooth for supply chain application development from documentation it appears that sawtooth is best for supply chain but all the validator node keeps the copy of the distributed ledger there is no concept of channels and private data.
Sawtooth has an open source solution for supply chain.
Fabric Channels may solve your use case. It doesn't scale if you need several channels. You can also have multiple blockchains with Sawtooth, which is essentially what a channel is anyway.
The blockchain concept is that all data is transaparent and viewable and auditable by everyone. That doesn't always work in some use cases and is an active research area. Encrypting payload data and storing some data off-chain are some solutions.
What are the fundamental differences between the two? I come from an Ethereum background and am fairly new to Hyperledger Fabric. I've heard people talk about "channels" in the Fabric ecosystem and it sounds quite similar to the concept of sidechains. It'd be awesome if someone could clarify the differences between the 2 (if they exist).
Since Etherium is a token-based blockchain, my understanding of sidechains is that they allow tokens to be transferred between the main ledger and a "child" ledger (the sidechain). Since Hyperledger has neither a native token nor the concept of "child" ledgers, I don't think they are really analogous to channels.
Hyperledger channels allow for private communication between a subset of peers on the network. Only those peers on the channel receive transaction data for the channel. Even if separate channels are not required, a single channel must still be defined, then all peers communicate on this channel. In this way, there is no main ledger in Hyperledger, as each channel effectively acts as a separate ledger.
I have developed two participants in two different hyperledger composer networks(A and B). A and B have a common asset. Since the asset is common, both networks must be able to update the shared asset. I have developed the shared asset in A, and I want to update it by B. B can read the asset by following the hyperledger tutorial[1], and also it can invoke low level commands of hyperledger fabric by its APIs[2] but I do not know how B can update the shared asset.
if the business networks are on the same channel in the same Fabric network (not different Fabric networks), then you can use invokeChaincode (as referred to in that 1st tutorial) to do an update call that would be atomic (ie all update(s) occur, or none at all, in the transaction function). You need to read up more on invokeChaincode usage in that regard.
Beyond that, it becomes a complex question, such as business networks on different Fabric channels or, in different Fabric networks - suffice to say, it would not be atomic in that case.
As far as I have seen most Hyperledger Fabric examples deal with the idea to create channels and thus private ledgers to apply view and data restrictions between parties. (e.g. https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS171x+3T2017/courseware/f0db5224eb0e4bbb8cc1e93a6819012c/8a27d35a4ae34e2ea5d2c43e8b3cb71c/?activate_block_id=block-v1%3ALinuxFoundationX%2BLFS171x%2B3T2017%2Btype%40sequential%2Bblock%408a27d35a4ae34e2ea5d2c43e8b3cb71c)
But as far as I know these channels can't be created/bootstrapped via API, only via scripting.
Two questions - If you have a lot of different parties like insurers and customers
How should one handle this situation without a Client API and
How to deal with these many channels/ledgers then in the future?
Thanks
Oliver
You can create a channel either with the peer CLI, or with using one of the SDKs.
Now, what really happens in both of them is that they simply issue a gRPC call to the ordering service's Broadcast gRPC service, with a custom crafted message that contains the identity material (PEMs) of the organizations, parameters, etc. (everything in the configtx.yaml)
So, if you just look at the implementation of how an SDK does that - you should be able to do that yourself.