Hyperledger Fabric v1.0Dominic Steil
At Mobile World Congress, I was convinced that Hyperledger was the next POC we would work on. I had the opportunity to see a demo from Ericsson built on Fabric, I spoke with a cyber security company working specifically with this protocol and had a few other conversations about the rapidly growing number of projects being built.
I never gave Hyperledger much of a look until then and the past month I have completely dived in to the platform architecture as we built out our second POC. I was surprised to see the mechanisms and technology under the hood that are put in place to drive state changes and I have become convinced this will be a huge open source project in the enterprise blockchain technology space. With over 100 members and growing, the fastest Linux Foundation project to date is undoubtedly going to be the platform of choice for a number of companies around the world.
Like I said, prior to the conference, I had never really had any interest in Hyperledger; I never looked at Chaincode, didn’t try and spin a quick app up; it just seemed bland, boring, clanky, status quo, and not really something that would catch on in the crypto space.
Well I will tell you, enterprise companies that are going to invest millions into replacing antiquated production level systems feel comfortable will bland, boring, and modularly built on the shoulders of giants (LevelDB, CouchDB, RocksDB) when it comes to reinventing their business, reducing risks, and creating new efficiencies.
With that said, Hyperledger was not as easy to get up and running. It is not quite the same experience you often find cloning and spinning up a quick node app. It incorporates other computer science disciplines such as containers and virtualization (Docker), versioned key-value stores and distributed databases, setting up and using GO, while still being able reason and design the transaction endorsement policy for a given business case.
It is built on these types of technologies in order to create a peer-to-peer permissioned transactional system that sets and propogates state.
Hyperledger Fabric’s v1.0 architecture has been designed to address two vital enterprise-grade requirements – security and scalability. Businesses and organizations can leverage this new architecture to execute confidential transactions on networks with shared or common assets – e.g. supply chain, FOREX market, healthcare, etc.
Fabric creates a transaction lifecycle where peers authenticate, propose, endorse, order, validate and commit transactions to the blocks. The valid and invalid are included in a block that refers to the hash of the previous block giving a world state of the entities represented and shared by each peer.
There are three different types of Peers:
Committer Peers: commits transactions, maintains ledger and state
Endorsing Peers: receives a transaction proposal for endorsement, responds granting or denying endorsement
Ordering Peers: approves the inclusion of blocks into the ledger and communicates with peer and endorsing peer nodes
Hyperledger Fabric also has a number of different concepts around certificates and certificate authorities, different Channels and Participants (joined peers) of the various Channels with declarative permissions to read certain data, Orderers and Orderering Services that don’t necessarily read the details of a transaction but will order them chronologically by channel (and ensure other things like agreement, deduplication, liveness) and ultimately key value sets that peers have agreed upon are written to a database. This is done programatically via Chaincode (written in Go / Java) which is deployed, invoked, and queried by peers on the network.
It is also important to note the Hyperledger Fabric has HSM (Hardware Security Module) support which is vital for safeguarding and managing digital keys for strong authentication. Hyperledger Fabric provides modified and unmodified PKCS11 for key generation, which supports cases like identity management that need more protection.
The Fabric Node SDK has two primary libraries fabric-client and fabric-ca-client; both of which we are using to integrate with Salesforce. The SDK also has an event system that enables applications to subscribe to Peers of the network and listen for Block, Chaincode, and Transaction Events.
There are a number of other Hyperledger projects such as: