Framework
hyperledger/fabric avatar
hyperledger/fabric

Hyperledger Fabric: A Permissioned Ledger Framework for Consortium Networks

Hyperledger Fabric is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a unique approach to consensus that enables performance at scale while preserving privacy.

16,732 stars9,105 forksGoApache-2.0

At a glance

What is it?
Hyperledger Fabric is an Apache-2.0 permissioned distributed ledger written in Go, with pluggable consensus and channel-scoped privacy. It fits consortiums that need shared state without a public chain, and it is a poor fit for anyone who wants a one-command node.
Who is it for?
Adopt Hyperledger Fabric if you are building a consortium or internal ledger where membership is known and channel-level privacy matters more than public verifiability. Do not adopt it if you need an anonymous open network, a single binary you can run in an afternoon, or a chain where any participant can join without an MSP identity.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem Hyperledger Fabric solves: shared state between organisations that do not trust each other

A consortium of banks, shippers or manufacturers often needs one authoritative record that several parties can read and update, without handing that record to a single operator and without publishing it to the world. A conventional database with a shared admin fails the second requirement, because the admin can rewrite history. A public blockchain fails the first, because transactions and often the data itself become visible to anyone.

Hyperledger Fabric is built for the middle case. Membership is explicit: participants are identified through an MSP (Membership Service Provider), and the README describes the project as an enterprise-grade permissioned distributed ledger framework. Privacy is scoped rather than global, so a subset of participants can transact on a channel that other network members do not see. The audience is therefore an engineering team inside an organisation or a consortium, not an individual developer experimenting on a laptop.

The repository itself reflects that audience. The top-level layout separates orderer/, core/, gossip/, msp/, discovery/ and ccaas_builder/, which are the concerns of a network operator rather than of an application developer. If your requirement is a public token or an open testnet, this is the wrong shape of system.

How Fabric's architecture separates ordering, execution and membership

The execution model is the part that distinguishes Fabric from order-execute chains. A transaction is first simulated by endorsing peers, which produce signed read-write sets rather than broadcasting the transaction itself. Those endorsements are then submitted to the ordering service, which sequences them and produces blocks. Committing peers validate the read-write sets against the current state before applying them. That split is why the README can claim a consensus approach that supports performance at scale while preserving privacy: the ordering service never needs to see the transaction logic, only the ordering of opaque payloads.

The ordering service is pluggable, and the dependency list in go.mod shows two concrete implementations: go.etcd.io/raft/v3 for Raft-based ordering and github.com/hyperledger-labs/SmartBFT for Byzantine fault tolerant ordering. Raft tolerates crash failures; SmartBFT is the option when ordering nodes may behave maliciously. Choosing between them is a real design decision, not a configuration detail.

State lives in a state database, with LevelDB available through github.com/syndtr/goleveldb, and the Makefile lists a docker-thirdparty target that pulls third-party images such as CouchDB. Chaincode can run as a normal container or through the ccaas_builder/ directory as a chaincode-as-a-service, which lets the contract run outside the peer's Docker daemon.

Discovery and gossip are separate subsystems. gossip/ propagates membership and block data between peers, while discovery/ serves information about which peers and endorsers are reachable. Both matter operationally: a peer that cannot gossip will not stay in sync, and a client that cannot discover endorsers will not be able to assemble a valid endorsement set.

Installing Hyperledger Fabric and running a first network

The README does not give installation commands. It points first-time users to the Getting Started section of the online documentation for v2.5, and states that the v2.5.x line is the current Long-Term Support release. Treat that documentation as the install path, because the repository ships source, a Makefile and container build targets rather than a package manager entry point.

The Makefile in the repository root is where the build targets live. Its header comment lists native targets including configtxgen, configtxlator, cryptogen, ledgerutil and orderer, plus docker and docker-thirdparty. Building the native binaries is therefore a make invocation:

bash
make native

That target, per the Makefile's own target list, ensures all native binaries are available. The same header documents `make docker` for container images and `make docker-thirdparty` for pulling third-party images such as CouchDB. If you only want a single tool, the header names individual targets, for example:

bash
make configtxgen
make cryptogen

These two binaries are the ones that appear in most Fabric tutorials: configtxgen produces the genesis block and channel configuration transactions, and cryptogen generates the MSP material for organisations. The Makefile also documents `make integration-test-prereqs` and `make integration-test` for running the repository's own integration suite, which is the closest thing to a self-check available from the repository alone.

What you should expect after `make native` is a set of binaries in the build output, not a running network. Standing up peers, an orderer and a channel is a multi-step configuration exercise that the repository README delegates entirely to the documentation site. That gap is worth planning for: the first working network is a documentation exercise, not a build exercise.

Where Fabric is the wrong tool

The first limitation is operational weight. There is no single command that produces a usable network. You need MSP identities for every organisation, a genesis block, channel configuration, at least one orderer and one committing peer, and a state database. The repository's own layout, with separate directories for msp/, orderer/, gossip/ and discovery/, is a map of the components you must configure. For a two-week prototype, that cost is often larger than the problem being solved.

The second limitation is that permissioning is mandatory, not optional. Fabric assumes known identities. If your use case requires anonymous participation or permissionless joining, the MSP model is working against you rather than for you, and no configuration flag changes that.

The third is the release-line split. The README names v2.5.x as the current LTS release, while the repository's recent releases include v3.1.5 and v3.1.4. The README's historic LTS list shows v2.2.x maintenance ended in February 2024 and v1.4.x ended in April 2021, which is a reminder that LTS windows close. The README does not document an upgrade path between the v2.5 and v3.1 lines, so that question has to be answered from the release notes before you commit to either.

Finally, the README does not document rollback procedures or disaster recovery for a running network. That silence is itself a planning input: you will be designing your own recovery process.

Hyperledger Fabric compared with a public smart contract chain

The closest alternative in practice is an EVM-based public or permissioned chain such as Ethereum, where contracts are deployed to a globally replicated state machine and every node executes every transaction. The difference in approach is not speed tuning; it is where the trust boundary sits.

On an EVM chain, the contract code and its inputs are visible to all validating nodes, and privacy requires cryptographic workarounds such as commitments or zero-knowledge proofs. On Fabric, privacy is a structural property: channels partition the ledger, and the ordering service sequences payloads it does not interpret. If your requirement is confidential pricing between two counterparties inside a larger consortium, that structural difference removes an entire class of workaround.

The trade-off runs the other way too. An EVM chain gives you a large ecosystem of tooling, a well-known contract language and public verifiability. Fabric gives you none of those by default. A third party cannot independently verify a Fabric transaction without being a network member with the right MSP identity. If public auditability is a requirement rather than a nice-to-have, an EVM chain is the better fit.

A second alternative is simply a shared database with signed audit records. For many consortiums where all parties trust an operator and only need tamper evidence, that is cheaper to run than a Fabric network and easier to operate. Fabric earns its complexity when no single party can be trusted with the ledger and when privacy between subsets of members is a hard requirement.

Maintenance, releases and what Apache-2.0 means here

The repository is not archived, and the last push was on 2026-09-21, which is the same day as the release of v3.1.5's predecessor line activity. Recent releases on the repository are v3.1.5 (2026-06-18), v2.5.16 (2026-06-17) and v3.1.4 (2026-02-23). Two release lines are being maintained in parallel, which is the practical upgrade cost: you must track which line you are on and when its LTS window closes.

The README states plainly that certain releases are designated Long-Term Support and that important fixes are backported during overlap periods. It also shows the end of that window for older lines: v2.2.x maintenance ended February 2024, v1.4.x ended April 2021. So the maintenance cost of Fabric is not the code, it is the calendar. A network built on an LTS line has a known expiry, and moving between major lines is a project rather than a patch.

Licensing is straightforward in shape but split in scope. The README states that the source code is available under the Apache License, Version 2.0, and that documentation files are under the Creative Commons Attribution 4.0 International License. The repository also carries a NOTICE file and a Makefile target named `license` that checks Go source files for the Apache license header. If you fork or vendor Fabric, the Apache-2.0 terms and the NOTICE file travel with the code. This is a description of what the repository states, not legal advice; your own counsel should review distribution obligations.

Editorial conclusion

Adopt Hyperledger Fabric if you are building a consortium or internal ledger where membership is known and channel-level privacy matters more than public verifiability. Do not adopt it if you need an anonymous open network, a single binary you can run in an afternoon, or a chain where any participant can join without an MSP identity. Before committing, verify which release line your organisation will run: v2.5.x is the current Long-Term Support release per the README, while v3.1.5 and v3.1.4 exist on the same repository, so confirm the upgrade path between the two before you write chaincode against either.

Frequently asked questions

What is Hyperledger Fabric?

It is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications, written primarily in Go and hosted under the Hyperledger umbrella as a Graduated project. Its README describes a modular architecture with pluggable components and a consensus approach that supports performance at scale while preserving privacy.

How do you install Hyperledger Fabric?

The README does not give install commands and instead directs first-time users to the Getting Started section of the online documentation for v2.5. From the repository itself, the Makefile documents targets such as `make native`, `make configtxgen` and `make cryptogen` for building binaries, and `make docker` for images.

Which Hyperledger Fabric release is the current Long-Term Support version?

The README names v2.5.x as the current LTS release, with v2.2.x and v1.4.x listed as historic LTS releases whose maintenance ended in February 2024 and April 2021 respectively. The repository also carries v3.1.5 and v3.1.4 releases, and the README does not document an upgrade path between the v2.5 and v3.1 lines.

What licence does Hyperledger Fabric use?

The README states that the source code is available under the Apache License, Version 2.0, and that documentation files are under the Creative Commons Attribution 4.0 International License. The repository also includes a NOTICE file and a Makefile target named `license` that checks Go source files for the Apache license header.

Can Hyperledger Fabric run without a permissioning layer?

No. Fabric is a permissioned ledger: participants are identified through an MSP, and the README describes it as designed for distributed ledger solutions with high levels of confidentiality. If you need anonymous or permissionless participation, the MSP model works against that requirement.

Official sources

  1. hyperledger/fabric on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/hyperledger-fabric.svg)](https://hysenlabs.com/projects/hyperledger-fabric)