Introducing Hyperledger - The Hyperledger Fabric Project - In depth!
HYPERLEDGER
https://www.hyperledger.org/
I am currently working with Hyperledger Fabric and as it is very entertaining to me i just wanted to share some knowledge with you guys :)
What is Hyperledger?

Hyperledger was created by the Linux Foundation to advance cross-industry Blockchain technologies for businesses
• It offers an open source Blockchain solution
• With open standards
• And open governance
• Announced 2015. Over 140 members working on the project
• IBM was one of the first members of Hyperledger
How Blockchain for businesses differs in key areas compared to Cryptocurrencies:
a) Identity over anonimity
b) Selective endorsement* over proof of work
c) Assets over cryptocurrency
*Selective endorsement: There is a limited set of participants in blockchain for business, just those doing business with each other. So they use a less resource intensive consensus mechanism, the selective endorsement. Only those who are interested in the transaction of assets (e.g. buyer, seller, their banks, regulators) are needed to reach consensus. They sign of the transaction before it gets recorded to the blockchain.
Hyperledger in depth
Hyperledger Framework Projects:

• Overview
o https://wiki.hyperledger.org/start
• Fabric - A Distributed Operating System for Permissioned Blockchains -
o https://www.hyperledger.org/projects/fabric
Hyperlegder Fabric in depth
• Hyperledger Fabric CA(Certificate Authaurity)
o consists of both a server and a client component
o to generate certifactes and accounts for different Users.
o In these certificates you can put additional information called attributes e.g. roles or acc nr.
o The chaincode can read this data and decide what to do based on these informations. You can
code the certificates yourself aswell
o There are two ways of interacting with a Hyperledger Fabric CA server: via the Hyperledger
Fabric CA client or through one of the Fabric SDKs.
o All communication to the Hyperledger Fabric CA server is via REST APIs. See fabric-
ca/swagger/swagger-fabric-ca.json for the swagger documentation for these REST APIs. You
may view this documentation via the http://editor2.swagger.io online editor.
o The Hyperledger Fabric CA client or SDK may connect to a server in a cluster of Hyperledger
Fabric CA servers. This is illustrated in the top right section of the diagram. The client routes to
an HA Proxy endpoint which load balances traffic to one of the fabric-ca-server cluster members.
o All Hyperledger Fabric CA servers in a cluster share the same database for keeping track of
identities and certificates. If LDAP is configured, the identity information is kept in LDAP rather
than the database.
o A server may contain multiple CAs. Each CA is either a root CA or an intermediate CA. Each
intermediate CA has a parent CA which is either a root CA or another intermediate CA.
• Hyperledger Fabric Peer
https://hyperledger-fabric-ca.readthedocs.io/en/latest/users-guide.html#fabric-ca-client
o is the place where the ledger is stored.
o Most of the time there is more than one peer. Requests are sent from the SDK to the peer, can
when it is decided update etc.
o One peer can be part of multiple channels.
o Every single channel is inside the peer but completely isolated (Different height of blocks,
different ledger, different policies, chaincodes, storage).
o Peers find each other and synchronize automatically all on the same height of the block
every Peer ist the same
• Hyperledger Fabric ordering service = heart oft he consensus algorithm.
o Provides order the of operations. Before anything is committed inside the ledger, it must pass the
ordering service.
o The Ordering service creates the blocks and makes sure that the transactions inside the block
are in the right order.
o The Ordering Service sends the Block to the peers and they blindly accept it and update( after
their verification step). So the ordering service decides which operation happend before or after
the others and verificaton/policies/security.
o Solo order (only for testing purposes).
o Ordering service based on apache kafka for business ordering services.
• Channels
o are completely seperate instances of hyperledger fabric which means every channel is
completely independent.
o They never exchange data and have different rules/policies.
o Channels isolate who can see the data. For example A,B and C are in one channel. Now A
wants to communicate with B without party C knowing. Thats when party A opens a new channel
to communicate with B. That way C has no possible way to interfere in their commúnication or
even to know that a new channel has been opened. you isolate who can see the data.
o Peers must be part of a channel to do things.
o All parties in a channel must agree for other people to join these parties.
o Before using a channel it must be created. One peer can be in several channels and every
channel is independent.
• Chaincode == Smartcontract in Hyperledger
o Reads and updates the ledger data.
o All business logic is in the chaincode (Written in Golang, java, JS as programming languages).
o Peer executes chaincode.
o Chaincode is the only thing capable of changing or manipulating the ledger/Blockchain.
o Chaincode must be part of the channel. Inside of a channel there can be different chaincodes
and you can use them seperately.
o Chaincode has to be written, installed and instantiated in every single peer in the channel.
o When transaction is executed it must be verified. policies come into play
(e.g. before the transaction gets added to the ledger all Peers have to verify the correctness. Or
only the majority. It all depends on how you want it to be// using and / or).
o Every chaincode has different policies.
• Membership Service Provider
o Set of certificates that define who you are and in which network you are. Only peers that are part
of the same MSP can see each other.
o SDKs must send the MSP ID because peers can be part of multiple channels or organisations
and to differentieate them you need the ID.
• Structure: Peers are part of one or many channels. Every single channel has a seperate ledger. Every channel has one or many chaincodes. And every Chaincode has different policies.
Two organizations are part of the same network and in the same channel
Sdk sending a transaction proposal to the peer or peers(e.g changing ownership of a property)
Peers accept proposal and simulate it (note: every peer has a different copy of the ledger. Synchronized but different) read write set this key is updated, and has a new value. Peers cryptograchically sign proposal and send it back as endeorsement response(cryptographic material of the peer, of the transaction, the read write set and the version/timestamp)
SDK receives all the responses of the peers and packs them as invocation request and signs the package with the key and sends it to the orderer
The Orderer verifies all the cryptograhphic materials and the cryptographic policies because a special chaincode is executed in this channel. And this chaincode has a particular policy. So if for example the policy says the request has to be verified by all the peers and you only send the transaction to one peer the orderer states the transaction as invalid. this will not be committed into the ledger, but it will be stored in the blockchain . Another thing is that the orderer compares the endorsements with each other. They MUST be the same (peers have same ledger, the same data and execute the same chaincode)
If everything is correct the orderer sends an invocation to the peers taking part in the transaction and the peers accept the request. The orderer is also in charge for deciding the execution order if more requests are put in a short time its basically a queue that executes after a certain time- or sizelimit.
Tipps: Provide deterministic ressources as arguments (for chaincode)
Some additional sources:
https://hyperledger-fabric-ca.readthedocs.io/en/latest/
https://hyperledger-fabric.readthedocs.io/en/release-1.2/configtx.html
Hope you liked the content!
Best regards
Orlando


Hello @orl4ndo!
I noticed you have posted many times since you began your journey on Steemit. That is great! We love active partipants.
I do want to point out that the Introduceyourself tag is meant to be used once only to introduce yourself to the Steemit community. You have now posted 6 times using the introduceyourself tag. Please see this link for more information on Tag Spam?
Please take these 2 warnings into consideration and help build a great platform!
Welcome to Steem @orl4ndo.
Do read A thumb rule for steemit minnows - 50:100:200:25 for starter tips.
Spend time reading Steem Blue Paper to know how Steem blockchain works and if you still have any queries ask them on our Ask me anything about Steemit post and we will try to answer that.
All the Best!!!
Welcome to Steem, @orl4ndo!
I am a bot coded by the SteemPlus team to help you make the best of your experience on the Steem Blockchain!
SteemPlus is a Chrome, Opera and Firefox extension that adds tons of features on Steemit.
It helps you see the real value of your account, who mentionned you, the value of the votes received, a filtered and sorted feed and much more! All of this in a fast and secure way.
To see why 3186 Steemians use SteemPlus, install our extension, read the documentation or the latest release : SteemPlus 2.20: Utopian + SteemPlus Partnership = Bigger upvotes.
Welcome to Steemit orl4ndo. Let me know if you got any questions about Steem or anything related to it! The official FAQ can be found here and has A LOT of information https://steemit.com/faq.html - Also remember, Steemit is just ONE of the sites built that uses Steem the blockchain. We also have DTube - our very own Youtube, DSound for Soundcloud and Steepshot if you prefer Instagram like experience. I'd also like to mention ChainBB - forums, Busy - Steemit with more modern look basically, DMania for memes and Dlive for streaming just like in Twitch! You can also earn Steem by gaming now! Search for Steemgar if that's more your thing. Welcome to the blockchain! :)
Congratulations @orl4ndo! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOPTo support your work, I also upvoted your post!