celestiaorg/celestia-core

A fork of CometBFT

Go

551

10,282 commits

updated Oct 17, 2026

See the code

README

celestia-core

celestia-core is a fork of cometbft/cometbft, an implementation of the Tendermint protocol, with the following changes:

  1. Early adoption of the ABCI++ methods: PrepareProposal and ProcessProposal because they haven't yet landed in a CometBFT release.
  2. Modifications to how DataHash in the block header is determined. In CometBFT, DataHash is based on the transactions included in a block. In Celestia, block data (including transactions) are erasure coded into a data square to enable data availability sampling. In order for the header to contain a commitment to this data square, DataHash was modified to be the Merkle root of the row and column roots of the erasure coded data square. See ADR 008 for the motivation or celestia-app/pkg/da/data_availability_header.go for the implementation. Note on the implementation: celestia-app computes the hash in prepare_proposal and returns it to CometBFT via blockData.Hash so a modification to celestia-core isn't strictly necessary but comments were added.
  3. The GRPC server exposed by CometBFT was modified to expose Celestia-specific APIs:
    • BlockAPI
    • BlobstreamAPI
  4. A propagation reactor was added to support Celestia's block propagation needs. It gossips compact blocks, tracks which proposal parts peers have or want, and helps recover missing proposal parts during consensus.

See ./docs/celestia-architecture for architecture decision records (ADRs) on Celestia modifications.

Diagram

                ^  +-------------------------------+  ^
                |  |                               |  |
                |  |  State-machine = Application  |  |
                |  |                               |  |   celestia-app (built with Cosmos SDK)
                |  |            ^      +           |  |
                |  +----------- | ABCI | ----------+  v
Celestia        |  |            +      v           |  ^
validator or    |  |                               |  |
full consensus  |  |           Consensus           |  |
node            |  |                               |  |
                |  +-------------------------------+  |   celestia-core (fork of CometBFT)
                |  |                               |  |
                |  |           Networking          |  |
                |  |                               |  |
                v  +-------------------------------+  v

Install

See https://github.com/celestiaorg/celestia-app#install

Usage

See https://github.com/celestiaorg/celestia-app#usage

Contributing

This repo intends on preserving the minimal possible diff with cometbft/cometbft to make fetching upstream changes easy. If the proposed contribution is

  • specific to Celestia: consider if celestia-app is a better target
  • not specific to Celestia: consider making the contribution upstream in CometBFT
  1. Install Go 1.23.6+
  2. Fork this repo
  3. Clone your fork
  4. Find an issue to work on (see good first issues)
  5. Work on a change in a branch on your fork
  6. When your change is ready, push your branch and create a PR that targets this repo

Helpful Commands

# Build a new CometBFT binary and output to build/comet
make build

# Install CometBFT binary
make install

# Run tests
make test

# If you modified any protobuf definitions in a `*.proto` file then
# you may need to lint, format, and generate updated `*.pb.go` files
make proto-lint
make proto-format
make proto-gen

Branches

main is the canonical branch for development. Most PRs should target main and optionally be backported to a release branch.

BranchBased on CometBFTRelease formatUsed by celestia-app
v0.42.xv0.38.xv0.42.0v10.x
v0.40.xv0.38.xv0.40.0v9.x
v0.39.x-celestiav0.38.xv0.39.0v6.x through v8.x
v0.38.x-celestiav0.38.xv1.54.1-tm-v0.38.17v4.x and v5.x
v0.34.x-celestiav0.34.xv1.52.1-tm-v0.34.35v1.x through v3.x

Branches cut from main after v0.39.x-celestia have no -celestia suffix. Newer celestia-app versions still depend on v0.34.x-celestia to multiplex ABCI v1 requests, via a github.com/tendermint/tendermint replace directive.

The replace directives in celestia-app's go.mod are the source of truth for which celestia-core version a given celestia-app branch consumes.

Releases

Previous releases were formatted: v<CELESTIA_CORE_VERSION>-tm-v<COMETBFT_VERSION>. For example: v1.4.0-tm-v0.34.20 is celestia-core version 1.4.0 based on CometBFT 0.34.20. CELESTIA_CORE_VERSION strives to adhere to Semantic Versioning.

Recent releases after v0.39.0 do not include the CometBFT version.

celestia
data-availability
data-availability-sampling
lazyledger
tendermint

celestiaorg/celestia-core

A fork of CometBFT

Go

551

10,282 commits

updated Oct 17, 2026

See the code

README

celestia-core

celestia-core is a fork of cometbft/cometbft, an implementation of the Tendermint protocol, with the following changes:

  1. Early adoption of the ABCI++ methods: PrepareProposal and ProcessProposal because they haven't yet landed in a CometBFT release.
  2. Modifications to how DataHash in the block header is determined. In CometBFT, DataHash is based on the transactions included in a block. In Celestia, block data (including transactions) are erasure coded into a data square to enable data availability sampling. In order for the header to contain a commitment to this data square, DataHash was modified to be the Merkle root of the row and column roots of the erasure coded data square. See ADR 008 for the motivation or celestia-app/pkg/da/data_availability_header.go for the implementation. Note on the implementation: celestia-app computes the hash in prepare_proposal and returns it to CometBFT via blockData.Hash so a modification to celestia-core isn't strictly necessary but comments were added.
  3. The GRPC server exposed by CometBFT was modified to expose Celestia-specific APIs:
    • BlockAPI
    • BlobstreamAPI
  4. A propagation reactor was added to support Celestia's block propagation needs. It gossips compact blocks, tracks which proposal parts peers have or want, and helps recover missing proposal parts during consensus.

See ./docs/celestia-architecture for architecture decision records (ADRs) on Celestia modifications.

Diagram

                ^  +-------------------------------+  ^
                |  |                               |  |
                |  |  State-machine = Application  |  |
                |  |                               |  |   celestia-app (built with Cosmos SDK)
                |  |            ^      +           |  |
                |  +----------- | ABCI | ----------+  v
Celestia        |  |            +      v           |  ^
validator or    |  |                               |  |
full consensus  |  |           Consensus           |  |
node            |  |                               |  |
                |  +-------------------------------+  |   celestia-core (fork of CometBFT)
                |  |                               |  |
                |  |           Networking          |  |
                |  |                               |  |
                v  +-------------------------------+  v

Install

See https://github.com/celestiaorg/celestia-app#install

Usage

See https://github.com/celestiaorg/celestia-app#usage

Contributing

This repo intends on preserving the minimal possible diff with cometbft/cometbft to make fetching upstream changes easy. If the proposed contribution is

  • specific to Celestia: consider if celestia-app is a better target
  • not specific to Celestia: consider making the contribution upstream in CometBFT
  1. Install Go 1.23.6+
  2. Fork this repo
  3. Clone your fork
  4. Find an issue to work on (see good first issues)
  5. Work on a change in a branch on your fork
  6. When your change is ready, push your branch and create a PR that targets this repo

Helpful Commands

# Build a new CometBFT binary and output to build/comet
make build

# Install CometBFT binary
make install

# Run tests
make test

# If you modified any protobuf definitions in a `*.proto` file then
# you may need to lint, format, and generate updated `*.pb.go` files
make proto-lint
make proto-format
make proto-gen

Branches

main is the canonical branch for development. Most PRs should target main and optionally be backported to a release branch.

BranchBased on CometBFTRelease formatUsed by celestia-app
v0.42.xv0.38.xv0.42.0v10.x
v0.40.xv0.38.xv0.40.0v9.x
v0.39.x-celestiav0.38.xv0.39.0v6.x through v8.x
v0.38.x-celestiav0.38.xv1.54.1-tm-v0.38.17v4.x and v5.x
v0.34.x-celestiav0.34.xv1.52.1-tm-v0.34.35v1.x through v3.x

Branches cut from main after v0.39.x-celestia have no -celestia suffix. Newer celestia-app versions still depend on v0.34.x-celestia to multiplex ABCI v1 requests, via a github.com/tendermint/tendermint replace directive.

The replace directives in celestia-app's go.mod are the source of truth for which celestia-core version a given celestia-app branch consumes.

Releases

Previous releases were formatted: v<CELESTIA_CORE_VERSION>-tm-v<COMETBFT_VERSION>. For example: v1.4.0-tm-v0.34.20 is celestia-core version 1.4.0 based on CometBFT 0.34.20. CELESTIA_CORE_VERSION strives to adhere to Semantic Versioning.

Recent releases after v0.39.0 do not include the CometBFT version.

celestia
data-availability
data-availability-sampling
lazyledger
tendermint

Project health

Overall

9.2/10

Maintained

10/10

Code review

10/10
OpenSSF Scorecard

Latest release

v0.31.12 · Apr 9, 2020

Releases this year

0

Significant stargazers

Jorropo

194 followers · starred Jan 2024

Nader Dabit

7,782 followers · starred Jun 2022

Christian Stewart

454 followers · starred Jul 2026

Ferran Borreguero

222 followers · starred Feb 2022