Module: fabric-network

Overview

This module provides a higher level API for interacting with smart contracts, and is the recommended API for client applications to interact with smart contracts deployed to a Hyperledger Fabric blockchain network.

Note that administrative capabilities, such as installing and starting smart contracts, are not currently provided by this API. For these tasks or other specific advanced usage, the lower level fabric-client API should be used. Access to related fabric-client objects is provided through the fabric-network API objects.

TypeScript definitions are included in this module.

Getting started

The entry point used to interact with a Hyperledger Fabric blockchain network is the Gateway class. This provides a connection to a peer within the blockchain network, and enables access to any of the blockchain Networks (channels) for which that peer is a member. This in turn provides access to Smart Contracts (chaincode) running within that blockchain network, and to which Transactions can be submitted or queries can be evaluated.

Private data can be submitted to transactions as transient data to prevent it from being recorded on the ledger.

Example

// Obtain the smart contract with which our application wants to interact
const wallet = new FileSystemWallet(walletDirectoryPath);
const gatewayOptions: GatewayOptions = {
    identity: 'user@example.org', // Previously imported identity
    wallet,
};
const gateway = new Gateway();
await gateway.connect(commonConnectionProfile, gatewayOptions);
const network = await gateway.getNetwork(channelName);
const contract = network.getContract(chaincodeId);

// Submit transactions or evaluate queries for the smart contract
const result = await contract.createTransaction(transactionName)
    .setTransient(privateData)
    .submit(arg1, arg2);

Classes

AbstractEventHubSelectionStrategy
AbstractEventListener
BaseCheckpointer
BaseWallet
CommitEventListener
Contract
ContractEventListener
CouchDBWallet
EventHubManager
FileSystemCheckpointer
FileSystemWallet
Gateway
HSMWalletMixin
InMemoryWallet
Network
Query
RoundRobinEventHubSelectionStrategy
TimeoutError
Transaction
TransactionError
X509WalletMixin

Type Definitions


DefaultEventHandlerStrategies

Properties:
Name Type Description
MSPID_SCOPE_ALLFORTX Listen for transaction commit events from all peers in the client identity's organization. The submitTransaction function will wait until successful events are received from all currently connected peers (minimum 1).
MSPID_SCOPE_ANYFORTX Listen for transaction commit events from all peers in the client identity's organization. The submitTransaction function will wait until a successful event is received from any peer.
NETWORK_SCOPE_ALLFORTX Listen for transaction commit events from all peers in the network. The submitTransaction function will wait until successful events are received from all currently connected peers (minimum 1).
NETWORK_SCOPE_ANYFORTX Listen for transaction commit events from all peers in the network. The submitTransaction function will wait until a successful event is received from any peer.

DefaultQueryHandlerStrategies

Properties:
Name Type Description
MSPID_SCOPE_SINGLE function Query any one of the event hubs for the connected organisation. Continue to use the same event hub for all queries unless it fails.
MSPID_SCOPE_ROUND_ROBIN function Query any one of the event hubs for the connected organisation. Use the next available peer for each successive query.

CheckpointFactories

Properties:
Name Type Description
FILE_SYSTEM_CHECKPOINTER function Checkpoint using the file system

DefaultEventHubSelectionStrategies

Properties:
Name Type Description
MSPID_SCOPE_ROUND_ROBIN function Reconnect to any of the event emitting peers in the org after a disconnect occurs. Select the event hub in a 'round robin' fashion