AlekseyANB / celestia-core

Celestia node software based on Tendermint.

Home Page:https://celestia.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

celestia-core

Go Reference GitHub Release Go Report Card Build Lint Tests

celestia-core is a fork of tendermint/tendermint with the following changes:

  1. Early adoption of the ABCI++ methods: PrepareProposal and ProcessProposal because they haven't yet landed in a Tendermint release.
  2. Modifications to how DataHash in the block header is determined. In Tendermint, DataHash is based on the transactions included in a block. In celestia-core, DataHash was modified to include the Merkle root of the row and column roots of the erasure coded data square. See ADR 008 for the motivation or ./pkg/da/data_availability_header.go for the implementation.

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 Tendermint Core)
                |  |                               |  |
                |  |           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 tendermint/tendermint 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 Tendermint
  1. Install Go 1.17+
  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 tendermint binary and output to build/tendermint
make build

# Install tendermint 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 Tendermint releases. For example: v0.34.x-celestia is based on the Tendermint 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 Tendermint 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.

About

Celestia node software based on Tendermint.

https://celestia.org/

License:Other


Languages

Language:Go 98.0%Language:Shell 0.6%Language:Python 0.5%Language:Makefile 0.4%Language:Jinja 0.3%Language:Dockerfile 0.1%Language:HCL 0.1%Language:HTML 0.0%