fabric-machine

module
v0.0.0-...-c74ab33 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2022 License: Apache-2.0

README

Fabric Machine

This project introduces Fabric Machine, an FPGA-based hardware accelerator for Hyperledger Fabric. It is based upon a more general "Blockchain Machine" hardware acceleration technology, which may be extended beyond Fabric to other Hyperledger projects in the future.

Introduction

This project explores the use of network-attached hardware acceleration for Hyperledger Fabric to improve its performance beyond what is achievable by software-only implementation on a multi-core server. It leverages FPGA accelerator cards (such as Xilinx Alveo), which are being increasingly adopted for accelerating cloud workloads and are also available from major public cloud providers such as AWS and Microsoft Azure.

The scalability and peak performance of Fabric is primarily limited by the bottlenecks present in its block validation/commit phase. The validation phase is run by either an endorser peer (which also endorses transactions) or validator peer. This repo provides an implementation of Fabric Machine, a hardware/software co-designed platform with hardware accelerator and modified Fabric software to act as the hardware-accelerated validator peer in a Fabric network.

The Fabric Machine peer is targeted for a server with a network-attached FPGA card in contrast to existing validator peers which run Fabric software on just a multi-core server. The Fabric Machine peer receives blocks from the orderer through a hardware-friendly protocol, and the block data is retrieved in FPGA without any involvement of the host CPU. The extracted block and its transactions are then passed through an efficient block-level and transaction-level pipeline in FPGA, which implements the bottleneck operations of the validation phase. Finally, Fabric software running on the host CPU accesses the block validation results from hardware, and then commits the block to disk-based ledger just like the software-only validator peer. Overall, a Fabric Machine peer is a hardware/software co-designed peer, leveraging both CPUs and FPGA-based acceleration to deliver significantly better performance than just using CPUs in a multi-core server.

For more details about Blockchain/Fabric Machine architecture, see the publications section below.

This repo provides a proof-of-concept implementation and is not meant for production use. The main goal is to engage the Hyperledger community in FPGA-based hardware acceleration, and to refine/improve the Fabric Machine peer based on community experience and feedback.

How to Use

We support Hyperledger Fabric v1.4 and v2.2, so check the README files in their corresponding directories on how to use this repo.

Citation

Please use the following citation when referring to this work:

H. Javaid, J. Yang, N. Santoso, M. Upadhyay, S. Mohan, C. Hu, G. Brebner, “Blockchain Machine: A Network-Attached Hardware Accelerator for Hyperledger Fabric”, in 42nd IEEE International Conference on Distributed Computing Systems (ICDCS), 2022.

Publications

  • [Talk] M. Kumaraswamy, H. Javaid. 2022. Accelerated Hyperledger Fabric for Supply Chain Applications in Semiconductor Industry. Hyperledger Global Forum.
  • [Paper] N. Santoso, H. Javaid. 2022. Improving Energy Efficiency of Permissioned Blockchains Using FPGAs. Accepted at International Conference on Parallel and Distributed Systems (ICPADS).
  • [Paper] H. Javaid, J. Yang, N. Santoso, M. Upadhyay, S. Mohan, C. Hu, G. Brebner. 2022. Blockchain Machine: A Network-Attached Hardware Accelerator for Hyperledger Fabric. International Conference on Distributed Computing Systems (ICDCS).
  • [Paper] R. Agrawal, J. Yang, H. Javaid. 2022. Efficient FPGA-based ECDSA Verification Engine for Permissioned Blockchains. International Conference on Application-Specific Systems, Architectures and Processors (ASAP).
  • [Talk] H. Javaid. 2021. Blockchain Machine: Accelerating Validation Bottlenecks in Hyperledger Fabric. Hyperledger Performance and Scale Working Group.
  • [Talk] H. Javaid. 2020. Hyperledger Performance Improvements (Presentation, Demo and Discussion). Hyperledger Sydney Meetup.
  • [Talk] S. Mohan. 2020. Hyperledger Performance Improvements (Demo and Discussion). Hyperledger San Francisco Meetup.

Maintainers

See MAINTAINERS.md file.

Initial Committers

Sponsors

Directories

Path Synopsis
v1.4
fabricmachine/api
Package fmapi provides the interface to interact with the Fabric machine (hardware accelerators implemented on an FPGA board, accessed through PCIe).
Package fmapi provides the interface to interact with the Fabric machine (hardware accelerators implemented on an FPGA board, accessed through PCIe).
fabricmachine/pcieutil
Package pcieutil contains utilities to read from and write to registers of a PCIe device.
Package pcieutil contains utilities to read from and write to registers of a PCIe device.
v2.2
fabricmachine/api
Package fmapi provides the interface to interact with the Fabric machine (hardware accelerators implemented on an FPGA board, accessed through PCIe).
Package fmapi provides the interface to interact with the Fabric machine (hardware accelerators implemented on an FPGA board, accessed through PCIe).
fabricmachine/pcieutil
Package pcieutil contains utilities to read from and write to registers of a PCIe device.
Package pcieutil contains utilities to read from and write to registers of a PCIe device.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL