Performance and scalability are a major concern for blockchain systems to become viable for mainstream applications. While many permissionless systems are limited by slow the consensus algorithms, Hyperledger Fabric has unique throughput optimization potential due to its permissioned nature. It has been shown to handle tens of thousands of transactions per second. However, these numbers show only the nominal throughput for uncontested transaction workloads. If incoming transactions compete for a small set of hot keys in the world state, the effective throughput drops drastically. We propose a novel two-pronged transaction execution approach that minimizes invalid transactions in the Fabric blockchain while maximizing concurrent execution.
We base this work on , our previous optimization of Hyperledger Fabric @cite_7 . We introduced more efficient data structures, caching and increased parallelization in the transaction validation pipeline to increase Fabric's throughput for conflict-free workloads by a factor six to seven. The numbers we presented resulted from a conflict-free transaction workload. Now, we extend our findings to handle arbitrary contentious workloads.
@cite_7
2964101012 2612369081 2101995353 2954107585
Blockchain technologies are expected to make a significant impact on a variety of industries. However, one issue holding them back is their limited transaction throughput, especially compared to established solutions such as distributed database systems. In this paper, we re-architect a modern permissioned blockchain system, Hyperledger Fabric, to increase transaction throughput from 3,000 to 20,000 transactions per second. We focus on performance bottlenecks beyond the consensus mechanism, and we propose architectural changes that reduce computation and I O overhead during transaction ordering and validation to greatly improve throughput. Notably, our optimizations are fully plug-and-play and do not require any interface changes to Hyperledger Fabric. The optimistic variants of Multi-Version Concurrency Control (MVCC) avoid blocking concurrent transactions at the cost of having a validation phase. Upon failure in the validation phase, the transaction is usually aborted and restarted from scratch. The "abort and restart" approach becomes a performance bottleneck for use cases with high contention objects or long running transactions. In addition, restarting from scratch creates a negative feedback loop in the system, because the system incurs additional overhead that may create even more conflicts. In this paper, we propose a novel approach for conflict resolution in MVCC for in-memory databases. This low overhead approach summarizes the transaction programs in the form of a dependency graph. The dependency graph also contains the constructs used in the validation phase of the MVCC algorithm. Then, when encountering conflicts among transactions, our mechanism quickly detects the conflict locations in the program and partially re-executes the conflicting transactions. This approach maximizes the reuse of the computations done in the initial execution round, and increases the transaction processing throughput. While hardware technology has undergone major advancements over the past decade, transaction processing systems have remained largely unchanged. The number of cores on a chip grows exponentially, following Moore's Law, allowing for an ever-increasing number of transactions to execute in parallel. As the number of concurrently-executing transactions increases, contended critical sections become scalability burdens. In typical transaction processing systems the centralized lock manager is often the first contended component and scalability bottleneck. In this paper, we identify the conventional thread-to-transaction assignment policy as the primary cause of contention. Then, we design DORA, a system that decomposes each transaction to smaller actions and assigns actions to threads based on which data each action is about to access. DORA's design allows each thread to mostly access thread-local data structures, minimizing interaction with the contention-prone centralized lock manager. Built on top of a conventional storage engine, DORA maintains all the ACID properties. Evaluation of a prototype implementation of DORA on a multicore system demonstrates that DORA attains up to 4.8x higher throughput than a state-of-the-art storage engine when running a variety of synthetic and real-world OLTP workloads. Blockchain is one of the most popular distributed ledger technologies. In order to solve the trustless problems between enterprises, many permissioned blockchain platforms are proposed in recent years. Hyperledger Fabric is a permissioned blockchain which is comprised of chaincode, endorsing peers, ordering service, committing peers and membership service. Fabric provides identity authentication, transactions encryption and high performance. Hence, decentralized application based on Fabric can be applied among enterprises to implement the immutable and high throughput for transactions. However, some limitations still exist in Fabric framework. This paper surveys the risk of non-deterministic transactions in Fabric, which can be caused by read-write conflict and transactions order dependency. Transactions are judged to be invalid by committing peers when read-write conflict exists. Besides, transactions submission order may be disrupted during endorsing and ordering. Both of the two risks can make the final transaction execution result non-deterministic. Finally, a solution of cache layer on Fabric client is proposed to solve the risk of non-deterministic transactions.