v2.2.4
This v2.2.4 release is the long-term support (LTS) release of the fabric-node-sdk packages that support Fabric 2.x, and supersedes previous v2.2.x releases. Please see the Fabric LTS release strategy document for more information on LTS releases:
https://github.com/hyperledger/fabric-rfcs/blob/master/text/0005-lts-release-strategy.md
If migrating a client application from an earlier version of the API, consult the migration tutorial for details of potentially breaking changes and recommended actions:
https://hyperledger.github.io/fabric-sdk-node/master/tutorial-migration.html
new features of 2.2.4
- The fabric-network HSM wallet provider will now save HSM private key
handles to provide access to HSM identities across sessions. The PKCS11 key
implementation has been updated to return the string representation of the
HSM private key handle when requesting the private key.
To save an HSM identity:
// enroll as usual
const enrollmentResults = await hsmCAClient.enroll(options);
// from the enrollment results get the info to save
const identity: HsmX509Identity = {
credentials: {
certificate: enrollmentResults.certificate,
privateKey: enrollmentResults.key.toBytes()
},
mspId: 'org1',
type: 'HSM-X.509'
};
await wallet.put('bob', identity);
- The fabric-network query handlers will now include the chaincode result (payload)
in the error object when a chaincode query fails (transaction.evaluate()
) and
the non "200" success status of the chaincode response includes a payload.
To see the payload and status:
try {
const results = transaction.evaluate(arg1);
} catch(error) {
console.log('Chaincode results:' + error.payload.toString());
console.log('Chaincode error status:' + error.status);
}
- Fabric legacy system chaincodes may now be used when the gateway is connected using
the discovery service. The performance enhancement to seed endorsements and
queries only to peers that the discovery service has indicated are running the
requested chaincode will not apply to system chaincodes 'cscc', 'lscc', and 'qscc'.
The discovery service does not show these legacy system chaincodes because they
do not have endorsement policies.
Major changes from v1.4:
- The fabric-client package has been removed. Client applications should use the Fabric Programming Model APIs from the fabric-network package.
- The underlying APIs that interface with the gRPC layer have been reimplemented in the fabric-common package and should not be used directly by client applications.
- Simplified wallet management, which is portable across SDK languages and with pluggable persistent storage. More information can be found here: https://hyperledger.github.io/fabric-sdk-node/master/tutorial-wallet.html
- New eventing implementation in fabric-network. Client application code can listen for block events using Network.addBlockListener(), and listen for contract events using Contract.addContractListener(). The Network object also provides capability to listen for transaction commit events, specifically to support the implementation of custom event handlers. More information can be found here: https://hyperledger.github.io/fabric-sdk-node/master/tutorial-transaction-commit-events.html