Skip to content

celestiaorg/celestia-core

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

77ca2a5 · Jul 30, 2024
Sep 21, 2023
Apr 12, 2024
Jun 7, 2024
Jun 18, 2024
Mar 15, 2023
May 3, 2023
Apr 16, 2024
May 7, 2024
Jul 2, 2024
Jun 8, 2023
Sep 21, 2023
May 3, 2023
Sep 21, 2023
Jul 2, 2024
Jul 26, 2024
Jul 24, 2023
Jul 2, 2024
Jul 30, 2024
Jun 21, 2024
Mar 15, 2023
Jul 2, 2024
Mar 15, 2023
Jul 2, 2024
Jun 7, 2024
Mar 20, 2023
Jul 26, 2024
Mar 15, 2023
Jul 2, 2024
Jul 2, 2024
Mar 15, 2023
Mar 15, 2023
Jun 5, 2024
Sep 21, 2023
Sep 22, 2020
Oct 22, 2020
Dec 4, 2017
Mar 15, 2023
Apr 16, 2024
Mar 15, 2023
Dec 13, 2022
Oct 19, 2020
Sep 21, 2023
Mar 15, 2023
Mar 15, 2023
Dec 13, 2022
Feb 29, 2024
Jun 7, 2024
Mar 15, 2023
Mar 15, 2023
Mar 15, 2023
Apr 26, 2023
Jun 23, 2022
Jun 23, 2022
Nov 19, 2021
Mar 15, 2023
Mar 15, 2023
Aug 21, 2020
Jul 17, 2024
Jul 17, 2024
Mar 15, 2023

Repository files navigation

celestia-core

Go Reference GitHub Release Go Report Card Build Lint Tests

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.

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.22.4+
  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

The canonical branches in this repo are based on CometBFT releases. For example: v0.34.x-celestia is based on the CometBFT v0.34.x release branch and contains Celestia-specific changes.

Versioning

Releases are formatted: v<CELESTIA_CORE_VERSION>-tm-v<TENDERMINT_CORE_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.

Careers

We are hiring Go engineers! Join us in building the future of blockchain scaling and interoperability. Apply here.