Accelerator is a software component developed by Samsung SDS that is designed to improve the performance of a blockchain network in terms of transaction throughput. Inspired by multilevel queue scheduling, Accelerator enables the blockchain network to deal with a large volume of transaction requests from applications. Samsung SDS and IBM have engaged to validate the applicability of Accelerator to Hyperledger Fabric networks and define a roadmap for integration of Accelerator into the Hyperledger Fabric open source project. The team defined a test harness around Hyperledger Caliper and Fabric running on a bare metal system in the IBM Cloud.
As a result of our efforts, we are able to publish consumable and repeatable results to the Hyperledger Fabric community which demonstrate a significant increase in transaction throughput with a minimal impact to latency. Results demonstrate up to 10x performance improvement. This initial draft focuses on results attained prior to the publication of the source code for Accelerator and the Caliper benchmark. These artifacts will be made public in early 2019 in order to build support in the Hyperledger Fabric community for incorporating the Accelerator functions into the Hyperledger Fabric open source project.
A consistent challenge to implementers of blockchain solutions is the comparatively low transaction rates that blockchain technology currently delivers. It is estimated, for example, that the Bitcoin network achieves a rate of 7 transactions per second (TPS). With the increase in the variety of blockchain use cases, the need for enhanced performance through higher TPS has reached ever-heightening level. More specifically, there are blockchain use cases that require processing of over thousands of transactions per second in real time. Examples of the cases might be processing of data from numerous sensors or identity/authentication service provisioning. Enterprise blockchain technology such as Hyperledger Fabric has proven capable of achieving much higher rates than public blockchain implementations, but the pressure to achieve even higher level of performance from the real-world use cases has been constant. This series documents an approach through which the transaction throughput of a permissioned blockchain network can be increased significantly without changing the Hyperledger Fabric implementation. Also discussed are the applicable implementation patterns as well as contraindicated use cases.
Consensus is referred to the process by which a network of nodes provides a guaranteed ordering of transactions and validates the block of transactions. It is an unconditional process in the blockchain system to provide trust to blockchain players, and it is generally composed of signing, exchanging, ordering, validation of transactions, etc. However, as parts of these tasks such as cryptographic operations are CPU-intensive and some of processes such as validation of transactions and blocks should be performed in serial, there can be performance bottleneck in such systems. Therefore, it is generally considered that the transaction throughput of blockchain is lower than that of the legacy systems since they do not commonly use the consensus for a transaction settlement.
The key idea of Accelerator begins with collecting a few transactions which do not have correlation to each other. Uncorrelated, here, refers to the transactions that do not access the same key or address for ledger update, which means they are not likely to make ledger Multi-Version Concurrency Control (MVCC) collisions described in during the consensus phase. The next step is having the grouped transactions consented upon together as opposed to individually. This is a workable solution because the transactions don’t affect each other’s commitment results. The simplest way to achieve this would be combining the uncorrelated transactions into a new transaction and submitting the new one to the blockchain network for the consensus. With this approach, more transactions can be processed under a single consensus phase and, as a result, it consequently leads to the increase of performance for both read and write transaction throughputs, i.e., RPS (Reads Per Seconds) and TPS (Transactions Per Seconds), respectively.
Figure 1 shows the example scenario of transaction acceleration discussed above. There are three transactions, named Tx1, Tx2, and Tx3, and each individually tries to update ledger state with different keys, A, B, and C. They are not correlated because they attempt to update values with the different keys, so no MVCC collision is expected during validation. When Accelerator receives those transactions during a specified period, for example 1 second, it creates a new transaction containing A, B, and C. It then submits the transaction proposal to blockchain peers for endorsement. In an endorsement peer, original transactions in the batched transaction are segregated for transaction simulation, and the proposed result is returned to the Accelerator.
The Accelerator feature can be implemented in either client applications or servers such as API gateway servers, which are used to provide convenient connection methods to blockchain networks for users. Acceleration in server, named server-side acceleration, is advantageous to throughput enhancement as it can utilize transactions from many clients for acceleration. Client-side acceleration, on the other hand, is beneficial to the case that there is no such a proxy or a gateway server in the blockchain network. Instead, additional implementation for acceleration feature is required in the client application.
Ted Kim is Vice President of Enterprise Blockchain at Samsung SDS America.