Hyperledger Fabric is the operating system of an enterprise-strength permissioned blockchain network. For a high-level overview of the fabric, visit http://hyperledger-fabric.readthedocs.io/en/latest/.
Applications can be developed to interact with the blockchain network on behalf of the users. APIs are available to:
- create channels
- ask peer nodes to join the channel
- install chaincodes in peers
- instantiate chaincodes in a channel
- invoke transactions by calling the chaincode
- query the ledger for transactions or blocks
How Different Components of the Fabric Work Together
The Transaction Flow document provides an excellent description of the application/SDK, peers, and orderers working together to process transactions and producing blocks.
Security on the Fabric is enforced with digital signatures. All requests made to the fabric must be signed by users with appropriate enrollment certificates. For a user's enrollment certificate to be considered valid on the Fabric, it must be signed by a trusted Certificate Authority (CA). Fabric supports any standard CAs. In addition, Fabric provides a CA server. See this overview.
Features of the SDK for Node.js
The Hyperledger Fabric SDK for Node.js is designed in an Object-Oriented programming style. Its modular construction enables application developers to plug in alternative implementations of key functions such as crypto suites, the state persistence store, and logging utility.
The SDK's list of features include:
- create a new channel
- send channel information to a peer to join
- install chaincode on a peer
- instantiate chaincode in a channel, which involves two steps: propose and transact
- submitting a transaction, which also involves two steps: propose and transact
- query a chaincode for the latest application state
- various query capabilities:
- monitoring events:
- serializable User object with signing capabilities
- hierarchical configuration settings with multiple layers of overrides: files, environment variable, program arguments, in-memory settings
- logging utility with a built-in logger (winston) and can be overriden with a number of popular loggers including log4js and bunyan
- pluggable CryptoSuite interface describe the cryptographic operations required for successful interactions with the Fabric. Two implementations are provided out of box:
- pluggable State Store interface for persisting state caches such as users
- customizable Crypto Key Store for any software-based cryptographic suite implementation
- supports both TLS (grpcs://) or non-TLS (grpc://) connections to peers and orderers, see Remote which is the superclass for peers and orderers
The SDK is made up of 3 top-level modules that can be accessed through the navigation menu Modules:
- api: pluggable APIs for application developers to supply alternative implementations of key interfaces used by the SDK. For each interface there are built-in default implementations.
- fabric-client: this module provides APIs to interact with the core components of a Hypreledger Fabric-based blockchain network, namely the peers, orderers and event streams.
- fabric-ca-client: this module provides APIs to interact with the optional component, fabric-ca, that contains services for membership management.